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 <T> void sendToAll(BaseMessage<T> baseMessage) {
|
WebSocketUtil.sendMessageAll(baseMessage); // 你已有的 WebSocket 发送逻辑
|
}
|
|
// 根据消息类型和内容创建消息并发送
|
public static <T> void sendMessage(String type, T payload) {
|
BaseMessage<T> baseMessage = BaseMessage.<T>builder()
|
.type(type)
|
.payload(payload)
|
.build();
|
sendToAll(baseMessage);
|
}
|
}
|