Skip to content

01. 连接与消息协议

1. 连接建立

1.1 WebSocket 地址

ws://[host]:[port]/ws?token=[auth_token]

1.2 连接示例 (JavaScript)

javascript
const token = 'your_auth_token'; 
const wsUrl = `ws://localhost:8060/ws?token=${token}`;
const ws = new WebSocket(wsUrl);

ws.onopen = (e) => console.log('✅ 连接已建立');
ws.onmessage = (e) => console.log('📩 收到消息:', JSON.parse(e.data));

2. 消息协议格式

2.1 基础格式 (JSON)

json
{
  "cmd": "command_type",
  "data": {}
}

2.2 完整命令类型清单

服务器支持 数字命令 (CmdEnum) 和 字符串命令 (SocketConstant) 两种方式。

2.2.1 系统指令 (数字类型)

命令名称指令值 (cmd)说明
SYS_PING0心跳检测
SUCCEED1操作成功响应 / 连接建立成功回执
USER_LIST100001获取当前用户的会话/在线用户列表
SEND_MSG100002通用消息发送 (DataMsg 格式)

2.2.2 业务指令 (字符串类型)

命令名称指令值 (cmd)说明
subscribe"subscribe"订阅特定频道/话题
unsubscribe"unsubscribe"取消订阅频道
join_group"join_group"加入群组聊天
leave_group"leave_group"离开群组聊天
get_online_users"get_online_users"获取当前所有在线用户列表
send_private_msg"send_private_msg"发送私聊消息 (推荐)
send_group_msg"send_group_msg"发送群聊消息 (推荐)

3. 基础消息收发流程示例

3.1 心跳检测 (SYS_PING)

请求:

javascript
ws.send(JSON.stringify({ 
    "cmd": 0, 
    "data": "ping" 
}));

响应:

json
{ "cmd": 0, "data": "true" }

3.2 建立连接后的回执 (SUCCEED)

连接成功后,服务器会自动推送:

json
{ 
    "cmd": 1, 
    "data": "session_id_xxx" 
}

3.3 发送私聊消息 (send_private_msg)

请求:

javascript
ws.send(JSON.stringify({
    "cmd": "send_private_msg",
    "data": {
        "receiverId": "456",
        "content": "你好,这是一条私聊消息",
        "contentType": "text" 
    }
}));

响应:

json
{ "cmd": 1, "data": "私聊消息发送成功" }

3.4 获取活跃会话列表 (USER_LIST)

说明:拉取当前用户的“最近联系人/聊天室”列表。

请求:

javascript
ws.send(JSON.stringify({ "cmd": 100001, "data": "" }));

响应:

json
{
    "cmd": 100001,
    "data": [
        {
            "chatRoomId": "0",
            "chatRoomName": "MMS-AI客服",
            "chatRoomType": "SYSTEM",
            "msgInfoList": [...]
        }
    ]
}

3.5 通用发送指令 (SEND_MSG)

说明:底层通用的消息发送格式。

请求:

javascript
ws.send(JSON.stringify({
    "cmd": 100002,
    "data": JSON.stringify({
        "data": {
            "chatRoomId": "123",
            "content": "Hello World",
            "sendUser": { "token": "your_token" }
        }
    })
}));

3.6 订阅/取消订阅频道 (subscribe/unsubscribe)

说明:用于监听特定的话题或频道消息。

订阅:

javascript
ws.send(JSON.stringify({
    "cmd": "subscribe",
    "data": JSON.stringify({ "channel": "news_topic" })
}));

取消订阅:

javascript
ws.send(JSON.stringify({
    "cmd": "unsubscribe",
    "data": JSON.stringify({ "channel": "news_topic" })
}));

3.7 加入/离开群组 (join_group/leave_group)

说明:进入或退出多人聊天室。

加入:

javascript
ws.send(JSON.stringify({
    "cmd": "join_group",
    "data": JSON.stringify({ "chatRoomId": "group_888" })
}));

离开:

javascript
ws.send(JSON.stringify({
    "cmd": "leave_group",
    "data": JSON.stringify({ "chatRoomId": "group_888" })
}));

3.8 获取全平台在线用户 (get_online_users)

说明:获取当前所有连接了 WebSocket 的用户 ID。

请求:

javascript
ws.send(JSON.stringify({
    "cmd": "get_online_users",
    "data": ""
}));

3.9 发送群聊消息 (send_group_msg)

说明:向指定聊天室发送多人可见消息。

请求:

javascript
ws.send(JSON.stringify({
    "cmd": "send_group_msg",
    "data": JSON.stringify({
        "chatRoomId": "group_888",
        "content": "大家好,我是新人",
        "contentType": "text"
    })
}));

Released under the MIT License.