2025-11-27 19:26:16 +08:00

58 lines
2.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

websocket消息服务器结构说明
1.核心框架
ChatWebSocketServer
主要作用:提供底层的客户端连接管理,消息的发送与接收,以及客户端身份信息的修改
WebSocketMessage
说明:消息结构标准实体类
WebSocketUser
说明:客户端列表属性实体类
WebSocketMsgService
说明:WebSocket消息处理业务接口
WebSocketMsgServiceImpl
说明:WebSocket消息处理业务实现类
RetryMsgService
说明:消息重试服务,发送失败重发,最多3次
RetryMsgTask
说明:定时器服务器,增加定时业务服务的地方
2,协议约定
消息服务单实例,避免重复实例化错误
消息服务器地址/ws/msgserver/{SID}
SID为客户端唯一ID,约定使用浏览器指纹
WebSocketMessage消息结构
// 消息类型(如CHAT/NOTICE/ORDER/HEARTBEAT)
private String msgType;
// 业务数据(JSON字符串,可解析为对应业务DTO)
private String data;
// 发送者ID(可选,也可从WebSocket连接中获取)
private String senderId;
// 接收者ID(可选,单聊/广播区分)
private String receiverId;
// 消息时间戳
private Long timestamp;
消息时间戳必传,目前代码直接默认了
重点字段msgType,申明发送的是什么消息
发送者ID不需要传,自动获取
接收者ID在指定传输目标时传入,目前暂时不使用
data 字段为消息体,都是json格式
消息举例
{"msgType":"CLIENT","data":{"instrid":"abc"},"receiverId":"LIS","timestamp":1755068400000}
{"msgType":"CLIENT","data":{"instrid":"abc"}}
消息类型约定
3 业务流程
启动服务器,自动创建websocket服务实例
客户端启动,连接websocket服务器,发送约定身份参数(非必须)
客户端等待消息中...
服务器创建消息服务业务层
定时器注册指定服务为定时任务,并声明循环周期(单线程服务,一类业务只创建一个消息服务器端)
消息服务程序触发消息规则,给指定客户端发送消息
客户端收到消息,做相应的处理
4 应用范例
UserService
提供基本的消息服务方法,
常用的操作客户端方法直接操作ChatWebSocketServer完成
包括调阅客户端列表,修改客户端附属属性,过滤,查找,给目标客户端发送消息,以及处理收到的消息