58 lines
2.3 KiB
Plaintext
58 lines
2.3 KiB
Plaintext
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完成
|
||
包括调阅客户端列表,修改客户端附属属性,过滤,查找,给目标客户端发送消息,以及处理收到的消息
|