TCP 全双工通信协议 双向 数据传输
org.springframework.bootspring-boot-starter-websocket
@Configurationpublic class WebSocketConfig {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}}
&#64;Component&#64;ServerEndpoint(value &#61; "/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();}}}