package top.haijunit.websocket.utils; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; 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 @UtilityClass 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 sendMessage(String message) { for (String item : WebSocketSessionHolder.getSessionsAll()) { sendMessage(item, message); } } public static void sendMessage(WebSocketSession session, String message) { sendMessage(session, new TextMessage(message)); } public static void sendMessage(WebSocketSession session, WebSocketMessage message) { if (session == null || !session.isOpen()) { log.error("[websocket] session会话失效"); } else { try { session.sendMessage(message); } catch (IOException e) { log.error("[websocket] session({}) 发送消息({}) 异常", session, message, e); } } } }