SDK · 鸿蒙 HarmonyOS
imcore-sdk 是 imcore IM 服务端的鸿蒙 HarmonyOS NEXT(API 12+,ArkTS)
客户端 SDK。基于 @ohos.net.webSocket 的共享 WebSocket 协议、自动重连、
心跳、登录生命周期、离线发送队列,以及私信/群聊/聊天室 API;协议命令与
DTO 从 clients/protocol.yaml 生成,与其他五端 SDK 同一 wire 契约。
引入
DevEco Studio → File → Import Module → 下载页解压出的
imcore-sdk-harmony-<版本>/;或在工程 oh-package.json5 中加
"imcore-sdk": "file:./imcore-sdk-harmony-<版本>"。
用法
import { createHarmonyClient, Cmd } from 'imcore-sdk';
const client = await createHarmonyClient({
url: 'wss://your-host/acc',
token: '<jwt>',
userId: '1001',
userName: 'alice',
storageContext: this.context, // 可选:离线队列持久化
storageName: 'imcore-1001', // 按用户命名,账号间隔离
});
client.onStatusChanged(s => console.info(`imcore: ${s}`));
const sub = client.on(Cmd.ChatMessage, p =>
console.info(`msg ${p.get('text')?.asString()}`));
await client.connect(); // 服务端确认登录后才返回;被拒抛 RequestError
await client.dm.send('2002', 'hello');
const history = await client.dm.history('2002', null, 20);
// 任意尚未封装命令的逃生通道:
await client.request('chat_group_create',
JsonValue.object().set('name', JsonValue.ofString('team')));
行为细节
- 回调全部运行在方舟单线程事件循环(UI 线程),无需线程封送。
- 断线/未登录时
sendQueued入队(preferences 持久化),重连登录后自动 flush;account_revoked时队列自动清空。 - 应用切后台由宿主调用
disconnect()、回前台connect()。 - 非 2xx 响应映射为
RequestError(含服务端 code);seq 关联 + 超时默认 10s。
能力范围(首期)
协议核心(ArkTS 兼容 TS 子集,CI 用 Node 原生 type-stripping 全量测试)
- DM/群/聊天室 API + 离线队列 + @ohos webSocket/preferences 适配。 不含: ArkUI TUIKit、Push Kit 推送、ohpm 公共仓库发布、DevEco 示例 工程。