热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Websocket应用

概念TCP全双工通信协议双向数据传输代码实现引入依赖org.springframework.boot

概念

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


代码实现


  1. 引入依赖

    org.springframework.bootspring-boot-starter-websocket

  2. Configuration配置 

    @Configuration
    public class WebSocketConfig {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}
    }

  3. 创建Server核心类  
     @ServerEndpoint(value = "/im/{userId}") 

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


  • 修改OrderHandlerConsumer类 
    保存订单数据后&#xff0c;调用WebsocketServer中的sendMessageToUser完成消息推送 


推荐阅读
author-avatar
萝莉控穿大鞋的胖胖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有