Skip to content
密信 IM · 开发文档

整体架构 ​

业务账号由你的系统管理,通信状态由 IM 服务与 SDK 管理。接入时先划清这两个边界,避免把服务端密钥带入客户端,或为同一账号创建两套消息状态。

服务与数据路径 ​

text
客户 App / Web / 桌面端
  ├─ 业务登录 ───────────────→ 客户业务后端
  │                            ├─ 签名 Server API → IM Server
  │                            └─ 接收 Webhook ←── IM Server
  ├─ SDK:IM Session / REST / WebSocket ───────────→ IM Server
  │                                                ├─ 数据库与缓存
  │                                                └─ 附件授权与对象存储
  └─ Call SDK:授权后的音视频连接 ────────────────→ 媒体服务

UIKit 位于客户端展示层,消费 SDK 的数据和操作接口。客户业务后端不需要转发每一条聊天消息;客户端获得有效 IM Session 后直接连接 IM 数据面。

服务端采用 Java 21 / Spring Boot 3,实时连接基于 Netty / WebSocket,数据使用 MySQL 与 Redis,并对接 S3 兼容对象存储和音视频媒体服务。分层职责与业务接口见服务端技术栈与接口概览。

一次登录如何完成 ​

  1. 用户通过客户应用完成业务登录。
  2. 客户后端校验业务身份与权限,并调用 IM 的服务端接口取得绑定用户和设备的 IM Session。
  3. 客户应用将 Session 交给 SDK,连接配置的 REST/WebSocket 地址。
  4. SDK同步会话与消息,向界面发布当前快照和后续变化。
  5. Session 需要更新时,由宿主续签回调向业务后端重新申请;退出时结束当前通信状态。

业务 Token 与 IM Session 用途不同。控制面签名密钥只保存在服务端;客户端只接收自己需要的短效登录结果。详见业务账号与 IM Session。

谁管理哪些状态 ​

状态负责方
业务登录、账号生命周期与业务权限客户业务系统
消息顺序、群权限与服务端可访问范围IM Server
发送状态、缓存、分页与断线补拉IM SDK
选中项、临时草稿投影、页面交互UIKit 或客户 UI
通话邀请、忙线与通话状态Call SDK 与配套服务端授权
已入房参与者与音视频媒体音视频媒体服务及对应适配

原生移动端与 Electron 使用 C++/SQLite 路径;Flutter 默认使用 Dart 运行时和本地 SQLite;Web 使用浏览器存储;微信使用受平台预算约束的缓存。存储方式不同,不改变“SDK 管理通信状态,UI 订阅结果”的接入原则。

私有化网络设计 ​

客户端可以来自内网或公网。根据目标用户决定域名、反向代理、证书、WebSocket 入口、对象存储访问与媒体网络策略;需要音视频时,还应验证实际网络中的媒体连通性。

生产部署建议使用正常校验证书的 HTTPS/WSS。浏览器的安全上下文与跨域、微信合法域名、移动端系统权限,仍需按各平台要求配置。

附件与业务事件 ​

附件上传结果需要形成标准消息内容;读取时可能使用有时效的授权地址,地址失效与消息不存在是两种情况。参见附件接入。

Webhook 将选定事件通知客户后端。接收方需要校验签名并处理重复事件,不能将业务后端的处理完成与用户界面的已读状态混为一谈。参见Webhook。

下一步:接入准备 · Server API 认证 · 私有化部署

开始构建你的通讯体验

获取授权包、完整接口资料与接入支持。

LET’S BUILD TOGETHER

聊聊你的通讯需求

联系密信团队,获取 SDK 授权、接入资料与私有化方案。

咨询内容:
客服微信mixinim
客服 QQ629900
联系邮箱mixinim@126.com

SDK 与源码按授权范围交付。此处不提供公开下载。