WebSocketUtils.java 1.6 KB

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