guoshilong
2023-03-15 f3c70289b1c491540a1173beebce77899b185ad5
src/main/java/org/springblade/common/handler/SocketIOService.java
@@ -41,18 +41,17 @@
   private SocketIOServer socketIOServer;
   /**
    * Spring IoC容器创建之后,在加载SocketIOServiceImpl Bean之后启动
    * Spring IoC容器创建之后,在加载SocketIOConfiguration Bean之后启动
    *
    * @throws Exception
    */
   @PostConstruct
   private void autoStartup() throws Exception {
      log.info("启动Socket!!!!!!!!!!");
      start();
   }
   /**
    * Spring IoC容器在销毁SocketIOServiceImpl Bean之前关闭,避免重启项目服务端口占用问题
    * Spring IoC容器在销毁SocketIOConfiguration Bean之前关闭,避免重启项目服务端口占用问题
    *
    * @throws Exception
    */
@@ -62,56 +61,48 @@
   }
   public void start() {
      // 监听客户端连接
      socketIOServer.addConnectListener(client -> {
         String uid = getParamsByClient(client);
         if (uid != null) {
            clientMap.put(uid, client);
            log.info("有新的客户端连接UID:{}", uid);
         }
         // 给客户端发送一条信息 发送ClientReceive事件 需要客户端绑定此事件即可接收到消息
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("name", "goat");
         jsonObject.put("message", "hello client");
         client.sendEvent("ClientReceive", jsonObject);
      });
      // 监听客户端断开连接
      socketIOServer.addDisconnectListener(listener -> {
         String uid = getParamsByClient(listener);
         if (uid != null) {
            clientMap.remove(uid);
            listener.disconnect();
            log.info("一条客户端连接中断");
         }
      });
      socketIOServer.addEventListener("ServerReceive", JSONObject.class, (client, data, ackSender) -> {
         String uid = getParamsByClient(client);
         String ip = getIpByClient(client);
         if (uid != null) {
            log.info("接收到SID:{}发来的消息:{}", uid, data.toJSONString());
            log.debug(ip + " ************ 客户端:" + data);
         }
      });
      socketIOServer.start();
      log.info("socket.io初始化服务完成");
   }
   /**
    * 连接时
    * @param client
    */
   @OnConnect
   public void onConnect(SocketIOClient client){
      log.info(getIpByClient(client));
      HandshakeData handshakeData = client.getHandshakeData();
      Map<String, List<String>> urlParams = handshakeData.getUrlParams();
   }
   /**
    * 监听前端订阅相同事件发送过来的信息
    * @param client
    * @param ackRequest
    * @param data
    */
   @OnEvent(value = "msg")
   public void OnEvent(SocketIOClient client, AckRequest ackRequest, String data){
      log.info("发来消息:" + data);
   }
   /**
    * 监听前端订阅相同事件发送过来的信息
    * @param client
    * @param ackRequest
    * @param data
    */
   @OnEvent(value = "msg2")
   public void OnEventMsg2(SocketIOClient client, AckRequest ackRequest, String data){
      log.info("发来消息:" + data);
      client.sendEvent("ClientReceive","copy"+data);
   }
   /**
    * 断开连接时
    * @param client
    */
   @OnDisconnect()
   public void OnEvent(SocketIOClient client){
      log.info("{}断开连接",client.getSessionId());