SDK · JavaScript/TypeScript

@imcore/sdk 是 imcore IM 服务端的同构 TypeScript 客户端 SDK。标准 WebSocket + JSON 信封,零运行时依赖。

安装

npm install @imcore/sdk
# Node / React Native 还需要一个 WebSocket 实现:
npm install ws

用法

import { ImcoreClient } from '@imcore/sdk';
// 浏览器:自动使用原生 WebSocket。
// Node/RN:自行传入。
// import WebSocket from 'ws';

const im = new ImcoreClient({
  url: 'wss://your-host/acc',
  auth: { token: '<jwt>', login: { userID: '1001', userName: 'alice' } },
  // webSocketImpl: WebSocket,        // Node/RN:传入 WebSocket 构造器
  // requestTimeoutMs: 10000,         // 默认:每个请求 10 000 ms
  // successCode: 200,                // 默认:200(服务端成功码)
  // reconnect: { initialDelayMs: 500, maxDelayMs: 15000 },  // 退避默认值
  // heartbeatIntervalMs: 25000,      // 默认:心跳间隔 25 000 ms
  // timers: ...,                     // 可注入的定时器 API(便于测试)
  // logger: console,                 // 默认:console;可传自定义 logger
});

im.onStatus((s) => console.log('status', s));     // idle|connecting|open|authenticated|closed
im.on('chat_message', (m) => console.log('msg', m));
im.on('reconnected', () => {
  // 在此重新拉取会话列表 + 游标历史(v1 不会自动对账)
});

// connect() 仅在服务端确认登录(code 200)后 resolve。
// 若服务端拒绝登录(如 token 无效)会 REJECT,请用 try/catch:
try {
  await im.connect();
} catch (err) {
  console.error('login refused', err); // err 是带 .code 的 RequestError
}
await im.dm.send({ targetUserID: '1002', text: 'hi' });
const history = await im.dm.history({ targetUserID: '1002', limit: 20 });

// 任意尚未封装的命令的逃生通道:
await im.request('chat_group_create', { name: 'team' });
im.send('chat_dm_typing', { targetUserID: '1002' });

能力范围(v1)

传输内核 + seq 关联的请求/响应 + 类型化的 DM/群/聊天室 发送/接收/历史。不含: 本地缓存/离线对账、媒体上传辅助、E2EE、离线推送注册、框架绑定。

v1 集成测试经环境变量开关启用,尚未对生产服务端做端到端验证;接入前请先对你自己的部署验证。