WuKongEasySDK
选择 iOS、Android、Flutter 或 Web 快速接入,使用固定版本完成 Alice 与 Bob 的在线双向消息闭环。
WuKongEasySDK 通过 WebSocket JSON-RPC CONNECT 提供轻量连接与在线消息 API。它适合已经拥有业务后端、希望自己维护界面和产品状态的应用。
选择平台,发送第一条消息
运行官方示例
按已验证 revision 启动四端 example,复现构建、双向消息与清理。
iOS 快速接入
精确安装 1.1.1,用一个应用级客户端完成连接、收发与清理。
Android 快速接入
精确安装 1.0.5,按进程单例与 Activity 生命周期完成闭环。
Flutter 快速接入
精确安装 1.1.0,保存监听器引用并在 dispose 中释放。
Web 快速接入
精确安装 easyjssdk 2.0.4,通过业务 BFF 获取连接材料。
完成对应教程后,你会让 Alice 与 Bob 分别连接,在个人 Channel 中双向发送一个文本 JSON Payload,并在退出时正确移除监听器和连接。
先判断是否适合
| 选择 EasySDK,如果你只需要 | 选择完整版 WuKongIMSDK,如果你还需要 |
|---|---|
| WebSocket 连接与自动重连 | 本地消息数据库与离线恢复 |
| 单聊或群聊 Channel 的在线消息 | 会话列表、未读数与消息同步 |
| 发送结果和实时消息事件 | 推送、多设备与完整平台能力 |
| 自己维护 UI、持久化和业务回执 | SDK 承担更多客户端消息状态 |
EasySDK 不是聊天 UI,也不是完整产品后端。send 成功表示服务端返回了发送结果,不表示对方已经收到、展示或处理消息。需要完整能力时,回到 SDK 选择。
开始前:由业务后端提供连接材料
客户端不应该创建自己的身份或调用 Product HTTP 管理接口。用户登录产品后,受信业务后端通过 HTTPS 返回最小连接材料:
{
"uid": "alice",
"token": "short-lived-token",
"websocketUrl": "wss://im.example.com/ws"
}| 字段 | 所有者与约束 |
|---|---|
uid | 业务后端确认的稳定用户标识;Alice 与 Bob 必须不同 |
token | 短期、可撤销,只用于当前身份连接;不能授予 Product HTTP 管理权限 |
websocketUrl | 后端从部署配置或安全路由结果中选择;生产环境使用 wss:// |
先完成认证与 Token。当前默认组合不会因为 /user/token 保存成功就自动获得生产级 CONNECT 校验;部署必须接入可信验证器,并证明无效、过期和撤销 Token 会被拒绝。
Alice 与 Bob 验收闭环
四个平台遵循同一条最小路径:
- 为 Alice 和 Bob 分别取得自己的
uid、短期token与websocketUrl; - 在两个独立设备、进程或浏览器上下文中按平台教程创建客户端;
- 两端都观察到连接成功后,Alice 向个人 Channel
bob发送文本 JSON Payload; - Alice 保存发送结果,Bob 在实时消息事件中核对
fromUid、Channel 与 Payload; - Bob 向 Alice 回发,验证反向链路;
- 退出页面或账号,移除监听器并断开连接,确认没有重复事件或后台连接。
这个闭环只验证在线消息。发送确认、实时接收与业务完成是三个不同状态,具体建模见消息收发。
希望先验证环境时,直接按运行官方示例使用已通过的服务端和客户端 revision,不必先把教学代码移入自己的应用。
四端生命周期差异
| 任务 | iOS | Android | Flutter | Web |
|---|---|---|---|---|
| 创建与初始化 | 应用级 WuKongEasySDK 实例 | 进程单例 getInstance() + init | 应用级单例 + init | 每个身份或浏览器上下文一个 WKIM 实例 |
| 监听器归属 | 保存 EventListener token | 保存同一个 listener 对象 | 保存同一个回调引用 | on / off 使用同一个函数引用 |
| 允许发送 | onConnect 后 | CONNECT 后 | connect 事件后 | Connect 事件后 |
| 退出账号 | 移除 token 并 disconnect | 移除监听并断开;账号切换需处理单例限制 | 移除监听、disconnect、dispose | off 后 destroy |
页面可以订阅连接状态,但不应因为页面重建而创建第二条连接。平台教程中的完整最小代码分别展示了正确的 owner 和清理位置。
上线前还要完成
- 使用 WSS,并验证证书、反向代理 WebSocket Upgrade 与设备侧可达性;
- 验证 Token 过期、撤销、错误身份和重放都会被拒绝;
- 在 Release 构建中保持 SDK 诊断关闭,并用非生产 canary 检查设备日志、Console、崩溃报告和采集器;
- 分别验收断网重连、离线恢复、去重、推送、多设备、容量、监控、升级与回滚;
- 记录服务端 revision、SDK 版本、平台、设备和网络环境,不把一次开发闭环当作生产 receipt。
继续使用上线检查关闭这些门禁。
版本与证据
四端源码 example 与正式发布包均已跑通
2026 年 8 月 31 日,四个官方 example 连接 WuKongIM 5676700d2dc966fa6fc9b2f0620a6ae429adad5a 完成源码运行;9 月 1 日,npm 2.0.4、Maven Central 1.0.5、CocoaPods 1.1.1 与 pub.dev 1.1.0 又连接 PR 最终 HEAD 1c9430f15fc8844e7025df07d54ab6e80e026414 的测试合并服务端 35f314cc2512f3f0f5d55d9677e817cb64129985,完成 Alice/Bob 在线双向消息和断开清理。托管任务见正式包验收运行,浏览器包另在 Chrome 151 通过。这仍不是物理真机、WSS、离线能力或生产 Token 校验凭据。
| 平台 | 已验证 example revision | 与正式版本的关系 |
|---|---|---|
| Web | a055b3667247333b6b3183249f5d5929673dfd53 | 已包含在正式 v2.0.4 |
| Android | 7134bbd0263fd01d9e7f71b7bd05b226f75b2292 | 已包含在正式 v1.0.5 |
| iOS | 40014c16c0becd390c105098d359048901f4d87c | 已包含在正式 v1.1.1 |
| Flutter | 98ab8f3d9a1ad53f40c32caef0979845a37ae9a6 | 与正式 v1.1.0 相同 |
源码和正式包仍是两类证据
上表证明精确源码 example;正式包运行证明 Registry 实际解析到的归档。新补丁版本已经包含这些源码修复并通过正式包验收,但记录结果时仍要同时保留源码 revision、包版本、服务端 revision 与运行环境。
当前正式发布版本
| 平台 | 固定版本与源码 revision | 正式分发 |
|---|---|---|
| iOS | v1.1.1 · ca688fcac2c4cd8d6f8e8163faf165376b520ba9 | Release · CocoaPods |
| Android | v1.0.5 · 61ae6dc6d0077b15e47cda1fd530296b97a06a7a | Release · Maven Central |
| Flutter | v1.1.0 · 98ab8f3d9a1ad53f40c32caef0979845a37ae9a6 | Release · pub.dev |
| Web | v2.0.4 · 9c03c98c725982fac224cd1d3b52456eae983975 | Release · npm |
正式包运行凭据
| 平台 | 精确 Registry 产物 | 运行环境 | 结果 |
|---|---|---|---|
| Web | easyjssdk@2.0.4 | Chrome 151;托管 Node.js 对端 | 双向消息、SENDACK 与断开通过 |
| Android | com.githubim:easysdk-android:1.0.5 | Android 14 / API 34 Emulator | Maven 解析、instrumentation 双向消息与断开通过 |
| iOS | WuKongEasySDK 1.1.1 | iOS Simulator | CocoaPods 解析、双向消息与断开通过 |
| Flutter | wukong_easy_sdk 1.1.0 | iOS Simulator | pub.dev hosted 解析、双向消息与断开通过 |
应用依赖只使用这些精确版本,不使用 latest 或宽松版本范围。四个正式版本都已包含默认关闭、输出脱敏的日志安全修复:
| 平台 | 修复来源 |
|---|---|
| iOS | PR #3 · b7ec4440b940539bee213f95a3be74948f4b9fb8 |
| Android | PR #3 · e984c7374a0e11f5d109ad3dbfdea599907735ff |
| Flutter | PR #3 · d7758c301e5289ddfa09cd09b6976c2479584b1c |
| Web | PR #6 · 3ebf505734c5b6764b30eac011f0b7a5024c89e8 |
当前教程的任务顺序校准自旧版 EasySDK 概览、iOS、Android、Flutter和 Web 页面;API、版本与安全边界以上表的正式源码和分发产物为准。