|
|
@@ -0,0 +1,54 @@
|
|
|
+package top.haijunit.websocket.utils;
|
|
|
+
|
|
|
+import lombok.AccessLevel;
|
|
|
+import lombok.NoArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.web.socket.PongMessage;
|
|
|
+import org.springframework.web.socket.TextMessage;
|
|
|
+import org.springframework.web.socket.WebSocketMessage;
|
|
|
+import org.springframework.web.socket.WebSocketSession;
|
|
|
+import top.haijunit.websocket.handler.WebSocketSessionHolder;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author zhanghaijun
|
|
|
+ * @date 2023/11/17 17:58
|
|
|
+ * @description 工具类
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
|
|
+public class WebSocketUtils {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送消息
|
|
|
+ *
|
|
|
+ * @param sessionKey session主键 一般为用户id
|
|
|
+ * @param message 消息文本
|
|
|
+ */
|
|
|
+ public static void sendMessage(String sessionKey, String message) {
|
|
|
+ WebSocketSession session = WebSocketSessionHolder.getSessions(sessionKey);
|
|
|
+ sendMessage(session, message);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void sendPongMessage(WebSocketSession session) {
|
|
|
+ sendMessage(session, new PongMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void sendMessage(WebSocketSession session, String message) {
|
|
|
+ sendMessage(session, new TextMessage(message));
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void sendMessage(WebSocketSession session, WebSocketMessage<?> message) {
|
|
|
+ if (session == null || !session.isOpen()) {
|
|
|
+ log.error("[send] session会话已经关闭");
|
|
|
+ } else {
|
|
|
+ try {
|
|
|
+ session.sendMessage(message);
|
|
|
+ log.info("[send] sessionId: {},message:{}", session.getId(), message);
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error("[send] session({}) 发送消息({}) 异常", session, message, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|