SDKsElectron
OpenIM Electron SDK 概览
以 WASM 文档为共享 API 基线,说明 Electron WASM 与 FFI 形态分工,以及 FFI 专属接入差异。
Electron SDK 同时提供 WASM 和 FFI 两种接入形态。共享的用户、会话、群组、消息、通话和事件能力以 WASM SDK 文档 为准;本页只说明形态选择,以及 FFI 形态相对 WASM 多出的 API 与登录参数差异。
SDK 形态分工
| 接入形态 | 适用场景 | 文档去向 |
|---|---|---|
| WASM | 浏览器页面、Electron 渲染进程、WebView、希望与 Web 客户端复用的 UI | 直接使用 WASM SDK 的接入与业务指南 |
| FFI | 桌面应用打包、原生运行时、需要本地文件全路径或独立 initSDK 生命周期的场景 | 本 Hub 的专属页 + WASM 共享业务页 |
| WASM + FFI | 同一产品同时支持 Web 与 Electron 打包 | 在业务层封装统一入口,按运行环境选择实现,避免同一用户被两个 SDK 实例重复登录 |
接入差异(仅 FFI)
WASM 浏览器包通过一次 login(InitAndLoginConfig) 同时传入服务地址、平台和用户凭据。Electron FFI 拆成两步:
initSDK(InitConfig):写入apiAddr、wsAddr、platformID、dataDir、systemType和日志选项。login({ userID, token }):只提交当前用户凭据。
完整参数、示例和 unInitSDK() 见认证与初始化。共享的连接、Token 和踢下线事件监听仍参考 WASM 认证与管理登录会话。
Electron 专属 API(FFI)
| 能力 | API | 说明 |
|---|---|---|
| 认证与生命周期 | initSDK / login / unInitSDK | 认证与初始化 |
| 本地全路径媒体消息 | createImageMessageFromFullPath 等 | 从完整路径创建媒体消息 |
| 上传诊断日志 | uploadLogs | 上传日志 |
浏览器或 Electron WASM 形态不要调用这些 FFI 专用方法;媒体消息应继续使用 WASM 文档中的 *ByFile / *ByURL 路径。
共享能力(链到 WASM)
桌面端注意事项
- 同时覆盖 Web 与 Electron 时,先定义应用内 IM 适配器,再按环境选择 WASM 或 FFI。
- 使用 WASM 形态时,打包后仍需验证
openIM.wasm、sql-wasm.wasm和wasm_exec.js可访问。 - 使用 FFI 形态时,按桌面安装包、权限、
dataDir和升级策略接入,不要套用浏览器 WASM 资源路径。 - 主进程与渲染进程都需要 IM 状态时,先明确 IPC 边界和会话所有权,避免多实例竞争。
- 不要把用户 Token 写入 preload 脚本或主进程日志。
这个页面有帮助吗?