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