服务端集成

服务端集成分三步:你的 App Server 用 App-Key/App-Secret 调用 IM Server 的 Open API;客户端登录后凭 Token 连接 IM Server;IM Server 通过回调把事件推回你的 App Server。

交互流程​

App(客户端) IMLib / IMKit App Server 你的业务服务 IM Server WS + REST 登录 / 业务请求 REST + 签名 回调 / 响应 Token / 业务数据

核心概念​

概念说明文档
请求签名App-Key + Nonce + Timestamp + SHA1 签名鉴权与签名
数据格式支持 application/x-www-form-urlencoded 与 application/json数据格式
域名私有化部署域名,建议 HTTPS域名
状态码统一错误码 + HTTP 状态映射状态码
服务端回调事件签名校验、重试与投递日志回调服务
限频接口级 QPS 与容量限制限频与限制

快速入门​

  1. 创建应用,获取 App-Key / App-Secret

    登录控制台 → 应用管理 → 创建应用;App-Key 用于标识应用,App-Secret 仅服务端持有。

  2. 注册用户并签发 Token

    调用 POST /user/register 注册用户,再调用 签发 Token(或使用内置的 token 接口),把 Token 下发给客户端。

  3. 调用第一个业务接口

    例如创建群组 POST /group/create;请求头带上签名,响应 code=0 表示成功。

  4. 配置回调地址

    在控制台配置回调 URL,选择需要的事件;使用签名校验请求来源,并保证幂等。

  5. 接入监控与告警

    控制台提供请求量、错误码、回调投递成功率;可导出到你的监控系统。

第一个请求​

APP_KEY=YOUR_APP_KEY
APP_SECRET=YOUR_APP_SECRET
NONCE=$(openssl rand -hex 16)
TS=$(date +%s%3N)
SIG=$(printf "%s" "$APP_SECRET$NONCE$TS" | openssl sha1 | awk '{print $2}')

curl -sS https://im.example.com/open/api/v1/user/register \
  -H "Content-Type: application/json" \
  -H "App-Key: $APP_KEY" -H "Nonce: $NONCE" -H "Timestamp: $TS" -H "Signature: $SIG" \
  -d '{"userId":"user1","name":"Alice"}'
import { createHash, randomBytes } from 'node:crypto';

const nonce = randomBytes(16).toString('hex');
const timestamp = String(Date.now());
const signature = createHash('sha1').update(APP_SECRET + nonce + timestamp).digest('hex');
const res = await fetch('https://im.example.com/open/api/v1/user/register', {
  method: 'POST',
  headers: {
    'content-type': 'application/json',
    'App-Key': APP_KEY, Nonce: nonce, Timestamp: timestamp, Signature: signature,
  },
  body: JSON.stringify({ userId: 'user1', name: 'Alice' }),
});
console.log(await res.json());
{
  "code": 0,
  "data": { "userId": "user1", "name": "Alice", "createdAt": 1700000000000 },
  "requestId": "req_7f3c2a"
}

接口与错误码​