基于 Spring WebSocket 的实时消息推送模块。
<dependency>
<groupId>com.mdframe.forge</groupId>
<artifactId>forge-starter-websocket</artifactId>
</dependency>
forge:
websocket:
enabled: true
path: /ws
allowed-origins: "*"
@Autowired
private IMessagePushService messagePushService;
// 发送给指定用户
messagePushService.pushToUser(userId, "通知内容");
// 发送给所有用户
messagePushService.pushToAll("系统公告");
// 发送给指定会话
messagePushService.pushToSession(sessionId, message);
public enum MessageType {
TEXT, // 文本消息
NOTICE, // 通知
COMMAND, // 命令
DATA // 数据推送
}
public class WebSocketMessage {
private String type; // 消息类型
private String title; // 标题
private String content; // 内容
private Object data; // 数据
private Long timestamp; // 时间戳
}
import { useWebSocket } from '@/utils/websocket'
const { connect, disconnect, send, onMessage } = useWebSocket('/ws')
// 连接
connect()
// 监听消息
onMessage((message) => {
console.log('收到消息:', message)
})
// 发送消息
send({ type: 'text', content: 'Hello' })
// 断开连接
disconnect()
// 推送给指定用户
void pushToUser(Long userId, String message);
// 推送给指定用户(对象消息)
void pushToUser(Long userId, WebSocketMessage message);
// 推送给所有用户
void pushToAll(String message);
// 推送给指定会话
void pushToSession(String sessionId, WebSocketMessage message);
// 判断用户是否在线
boolean isOnline(Long userId);
// 获取在线用户数
int getOnlineCount();