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); } } } }