package com.ard.route.websocket.utils; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.ard.route.websocket.MiWebSocketSessionManager; import com.ard.work.component.websocket.WebSocketSessionManager; import com.ard.work.component.websocket.utils.WebSocketUtil; import com.ard.work.domain.message.BaseMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import java.io.IOException; import java.net.InetSocketAddress; import java.util.List; import java.util.Map; @Slf4j public class MiWebSocketUtils { /** * @param session 用户 session * @param message 发送内容 */ public static void sendMessage(WebSocketSession session, String message) { if (session == null) { return; } final InetSocketAddress remoteAddress = session.getRemoteAddress(); if (remoteAddress == null) { return; } synchronized (session) { try { log.debug("发送消息:" + message); session.sendMessage(new TextMessage(String.join(", ", message))); } catch (IOException e) { log.error("sendMessage IOException ", e); } } } public static void sendMessage(Long userId, String message) { WebSocketSession session = MiWebSocketSessionManager.getSession(userId); sendMessage(session, message); } /** * @param session 用户 session * @param message 发送内容 */ public static void sendMessage(WebSocketSession session, Map message) { if (session == null) { return; } final InetSocketAddress remoteAddress = session.getRemoteAddress(); if (remoteAddress == null) { return; } synchronized (session) { try { session.sendMessage(new TextMessage(JSONObject.toJSONString(message))); } catch (IOException e) { log.error("sendMessage IOException ", e); } } } public static void sendMessage(WebSocketSession session, List message) { if (session == null) { return; } final InetSocketAddress remoteAddress = session.getRemoteAddress(); if (remoteAddress == null) { return; } synchronized (session) { try { session.sendMessage(new TextMessage(JSONObject.toJSONString(message))); } catch (IOException e) { log.error("sendMessage IOException ", e); } } } /** * 推送消息到其他客户端 * * @param message */ public static void sendMessageAll(String message) { MiWebSocketSessionManager.broadcast(message); } /** * 推送消息到其他客户端 * * @param message */ public static void sendMessageAll(Map message) { JSONObject jsonObject = new JSONObject(message); MiWebSocketSessionManager.broadcast(jsonObject.toString()); } /** * 推送消息到其他客户端 * * @param message */ public static void sendMessageAll(Object message) { String jsonMessage = JSONObject.toJSONString(message); // 确保对象转换为 JSON 字符串 WebSocketSessionManager.broadcast(jsonMessage); } /** * 推送消息到其他客户端 * * @param message */ public static void sendMessageAll(List message) { WebSocketSessionManager.broadcast(JSON.toJSONString(message)); } // 发送消息到所有 WebSocket 客户端 public static void sendToAll(BaseMessage baseMessage) { WebSocketUtil.sendMessageAll(baseMessage); // 你已有的 WebSocket 发送逻辑 } // 根据消息类型和内容创建消息并发送 public static void sendMessage(String type, T payload) { BaseMessage baseMessage = BaseMessage.builder() .type(type) .payload(payload) .build(); sendToAll(baseMessage); } }