Skip to main content

JSON-RPC 协议

概述

WuKongIM 使用 JSON-RPC 2.0 规范进行通信。所有请求、响应和通知都遵循 JSON-RPC 2.0 标准结构。

协议字段说明

  • jsonrpc: 可选 字符串,固定为 “2.0”。如果省略,服务器应假定其为 “2.0”
  • method: 请求或通知的方法名
  • params: 请求或通知的参数,通常是一个对象
  • id: 请求的唯一标识符(字符串类型)。响应必须包含与请求相同的 id。通知没有 id
  • result: 成功响应的结果数据
  • error: 错误响应的错误对象
完整的协议 schema 可参考:wukongim_rpc_schema.json

重要注意事项

  1. 建立 WebSocket 连接后,需要在 2 秒之内 进行认证(connect),超过 2 秒或者认证失败的连接将断开
  2. 定期发送 ping 包,让服务器知道你活着(推荐间隔大概 1-2 分钟左右)

通用组件

ErrorObject

当请求处理失败时,响应中会包含此对象: 可选的消息头信息:

SettingFlags

消息设置标记位:

核心消息类型

1. 连接认证 (Connect)

Connect Request

客户端发起的第一个请求,用于建立连接和认证。 参数 (params) 示例请求

Connect Response

成功结果 (result) 成功响应示例
错误响应示例

2. 发送消息 (Send)

Send Request

客户端发送消息到指定频道。 参数 (params) 示例请求

Send Response

成功结果 (result) 成功响应示例

3. 接收消息 (Recv)

Recv Notification

服务器推送消息给客户端。 参数 (params) 示例通知

4. 消息确认 (RecvAck)

RecvAck Request

客户端确认收到某条消息。 参数 (params) 示例请求
recvack 通常没有特定的响应体,如果需要响应,服务器可能会返回一个空的成功 result 或错误。

5. 事件通知 (Event)

Event Notification

服务器向客户端推送事件通知,用于传递系统状态变化、用户行为通知等非消息类型的信息。 参数 (params) 示例通知
常见事件类型
  • user_online: 用户上线事件
  • user_offline: 用户下线事件
  • channel_update: 频道信息更新事件
  • member_join: 成员加入频道事件
  • member_leave: 成员离开频道事件
  • typing: 用户正在输入事件
  • message_read: 消息已读事件
  • channel_delete: 频道删除事件

6. 心跳保活 (Ping/Pong)

Ping Request

客户端发送心跳以保持连接。 参数 (params): 通常为 null 或空对象 {} 示例请求

Pong Response

服务器对 ping 请求的响应。 示例响应

高级功能

订阅频道 (Subscribe) - 暂不支持

用于订阅指定频道的消息推送。

取消订阅 (Unsubscribe) - 暂不支持

用于取消订阅指定频道。

断开连接 (Disconnect) - 暂不支持

用于主动断开连接或接收服务器断开通知。

最佳实践

  1. 及时认证: 连接建立后立即发送 connect 请求进行认证
  2. 保持心跳: 定期发送 ping 请求维持连接活跃状态
  3. 消息确认: 收到消息后及时发送 recvack 确认
  4. 错误处理: 妥善处理各种错误响应和异常情况
  5. 重连机制: 实现自动重连逻辑处理网络中断

相关资源