SocketHandler.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package com.sckj.common.socketio;
  2. import com.corundumstudio.socketio.SocketIOServer;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.apache.commons.lang3.ObjectUtils;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Component;
  7. import javax.annotation.PostConstruct;
  8. import javax.annotation.PreDestroy;
  9. /**
  10. * @Author: sckj
  11. * @Description: 客户端自动连接和断开、服务端关闭
  12. */
  13. @Component
  14. @Slf4j
  15. public class SocketHandler {
  16. @Autowired
  17. private SocketIOServer socketIoServer;
  18. private static final String USERID = "userId";
  19. /**
  20. * 容器销毁前,自动调用此方法,关闭 socketIo 服务端
  21. *
  22. * @Param []
  23. * @return
  24. **/
  25. @PreDestroy
  26. private void destroy(){
  27. try {
  28. log.debug("关闭 socket 服务端");
  29. if(null != socketIoServer){
  30. socketIoServer.stop();
  31. }
  32. }catch (Exception e){
  33. e.printStackTrace();
  34. }
  35. }
  36. @PostConstruct
  37. public void init() {
  38. log.debug("SocketEventListener initialized");
  39. //添加监听,客户端自动连接到 socket 服务端
  40. socketIoServer.addConnectListener(client -> {
  41. String userId = client.getHandshakeData().getSingleUrlParam(USERID);
  42. log.info("客户端userId: {},已连接,客户端ID为:{}",userId,client.getSessionId());
  43. if(ObjectUtils.isNotEmpty(userId)){
  44. SocketUtil.connectMap.put(userId, client);
  45. SocketUtil.clientUserIds.put(client,userId);
  46. }
  47. });
  48. //添加监听,客户端跟 socket 服务端自动断开
  49. socketIoServer.addDisconnectListener(client -> {
  50. String userId = client.getHandshakeData().getSingleUrlParam(USERID);
  51. log.info("客户端userId: {},断开连接,客户端ID为:{}",userId,client.getSessionId());
  52. if(ObjectUtils.isNotEmpty(userId)){
  53. SocketUtil.connectMap.remove(userId, client);
  54. SocketUtil.clientUserIds.remove(client,userId);
  55. }
  56. });
  57. }
  58. }