SDK · Dart/Flutter

imcore_sdk 是 imcore IM 服务端的纯 Dart 客户端 SDK。WebSocket + JSON,可用于 Flutter(iOS/Android/桌面)、Dart CLI/服务端、Dart web。唯一运行时依赖:web_socket_channel

引入

# pubspec.yaml
dependencies:
  imcore_sdk:
    path: ../path/to/clients/dart/imcore_sdk   # 或 git/hosted 引用

用法

import 'package:imcore_sdk/imcore_sdk.dart';

final im = ImcoreClient(
  url: 'wss://your-host/acc',
  auth: AuthConfig(
    token: '<jwt>',                                  // 或 tokenProvider: () async => ...
    login: LoginPayload(userId: '1001', userName: 'alice'),
  ),
  // heartbeatInterval / requestTimeout / reconnect / clock / socketFactory 均为可选。
);

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

// connect() 在服务端确认登录后才 resolve;若登录被拒(如 token 无效)会 THROW —— 务必包裹。
try {
  await im.connect();
} on RequestError catch (e) {
  print('login failed: $e');
}

await im.dm.send(targetUserId: '1002', text: 'hi');
final history = await im.dm.history(targetUserId: '1002', limit: 20);

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

能力范围(v1)

传输内核 + seq 关联的请求/响应 + 登录确认门控的自动登录 + 类型化的 DM/群/聊天室 发送/接收/历史。不含: 本地缓存/离线对账、媒体上传辅助、E2EE、离线推送注册、Flutter 组件。

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