WebSocketUtils.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package top.haijunit.websocket.utils;
  2. import lombok.AccessLevel;
  3. import lombok.NoArgsConstructor;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.web.socket.PongMessage;
  6. import org.springframework.web.socket.TextMessage;
  7. import org.springframework.web.socket.WebSocketMessage;
  8. import org.springframework.web.socket.WebSocketSession;
  9. import top.haijunit.websocket.handler.WebSocketSessionHolder;
  10. import java.io.IOException;
  11. /**
  12. * @author zhanghaijun
  13. * @date 2023/11/17 17:58
  14. * @description 工具类
  15. */
  16. @Slf4j
  17. @NoArgsConstructor(access = AccessLevel.PRIVATE)
  18. public class WebSocketUtils {
  19. /**
  20. * 发送消息
  21. *
  22. * @param sessionKey session主键 一般为用户id
  23. * @param message 消息文本
  24. */
  25. public static void sendMessage(String sessionKey, String message) {
  26. WebSocketSession session = WebSocketSessionHolder.getSessions(sessionKey);
  27. sendMessage(session, message);
  28. }
  29. public static void sendPongMessage(WebSocketSession session) {
  30. sendMessage(session, new PongMessage());
  31. }
  32. public static void sendMessage(WebSocketSession session, String message) {
  33. sendMessage(session, new TextMessage(message));
  34. }
  35. private static void sendMessage(WebSocketSession session, WebSocketMessage<?> message) {
  36. if (session == null || !session.isOpen()) {
  37. log.error("[send] session会话已经关闭");
  38. } else {
  39. try {
  40. session.sendMessage(message);
  41. log.info("[send] sessionId: {},message:{}", session.getId(), message);
  42. } catch (IOException e) {
  43. log.error("[send] session({}) 发送消息({}) 异常", session, message, e);
  44. }
  45. }
  46. }
  47. }