Websocket应用

概念

TCP 全双工通信协议 双向 数据传输

代码实现

  1. 引入依赖
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>

  2. Configuration配置 
    @Configuration
    public class WebSocketConfig {
     @Bean
     public ServerEndpointExporter serverEndpointExporter() {
     return new ServerEndpointExporter();
     }
    }

  3. 创建Server核心类  
     @ServerEndpoint(value = "/im/{userId}") 
    @Component
    @ServerEndpoint(value = "/im/{userId}")
    public class WebSocketServer {
     // 创建一个 HashMap 集合,通过该集合来存储 session 信息
     private static HashMap<String , Session> sessionHashMap = new HashMap<>() ;
     // 创建一个变量,用来记录 userId
     private String userId = null ;
     /**
     * 当前客户端和服务器建立连接了以后,在这里会执行该方法
     * @param session
     * @param userId
     */
     @OnOpen
     public void onOpen(Session session , @PathParam(value = "userId") String userId) {
     // 把 userId 赋值给成员的 userId
     this.userId = userId ;
     // 就是把我们的 session 信息存储起来,后期我们在进行消息推送的时候,其实就是通过 session 对象中的方法完成消息的推送
     if(sessionHashMap.containsKey(userId)) {
     sessionHashMap.remove(userId) ;
     }
     // 进行保存
     sessionHashMap.put(userId , session) ;
     }
     @OnClose
     public void onClose() {
     if(sessionHashMap.containsKey(userId)) {
     sessionHashMap.remove(userId) ;
     }
     }
     // 消息的推送
    北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
     public void sendMessageToUser(String userId , String message) {
     try {
     Session session = sessionHashMap.get(userId);
     session.getBasicRemote().sendText(message);
     } catch (IOException e) {
     e.printStackTrace();
     }
     }
    }
    
  • 修改OrderHandlerConsumer类 
    保存订单数据后,调用WebsocketServer中的sendMessageToUser完成消息推送 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值