外观
服务端技术栈与接口概览
密信 IM 开发版 5.0 提供可私有化部署的通信服务。客户业务后端通过 Server API 接入账号、项目与业务事件;客户端取得 IM Session 后,直接连接 IM 服务进行消息收发与同步。
技术栈与分层
| 服务层 | 技术选型 | 负责的工作 |
|---|---|---|
| 应用与业务接口 | Java 21、Spring Boot 3 | Session、用户、群组、业务消息与管理服务 |
| 实时连接网关 | Netty 4.1、WebSocket / WSS | 客户端长连接、实时消息通信 |
| 消息与业务持久化 | MySQL、MyBatis-Plus | 消息及相关业务状态的存取 |
| 缓存与协同 | Redis、Redisson | 缓存、连接协同、登录票据等临时状态 |
| 附件资源 | S3 兼容对象存储 | 文件上传、存储与预签名访问 |
| 音视频媒体 | 配套媒体组件 | 媒体房间、入房授权与音视频连接 |
音视频媒体服务与 IM 通话信令分别部署和配置。具体组件组合、资源规模与版本由项目交付确定。参见整体架构与私有化部署。
业务后端可以接入什么
| 能力 | 代表接口或流程 | 典型用途 |
|---|---|---|
| 用户同步 | POST /external/user/sync | 新增或更新 IM 用户,映射既有业务账号 |
| Session 签发 | POST /external/auth/token | 业务登录后取得设备绑定的 IM Session |
| Session 撤销 | POST /external/auth/revoke | 按设备或用户撤销通信登录态 |
| 项目群同步 | POST /external/group/project/sync | 以稳定项目标识同步群、成员与管理员 |
| 业务扩展消息 | POST /external/message/send | 发送已注册的 x.* 类型业务内容 |
| 智能体流式消息 | start → chunk → finish | 分片展示业务侧智能体的回复,完成后归并正式消息 |
| 事件回调 | Webhook 订阅与投递 | 将群变化、消息撤回等事件通知客户后端 |
以上接口覆盖常用业务集成流程,完整参数说明随组件资料交付。用户资料同步、Session 签发和消息发送分别调用对应接口。
/external/message/send 接受已注册的 x.* 业务扩展类型,不接受任意类型名或普通 txt。文件消息使用配套文件发送接口;智能体的模型调用与业务决策由客户系统负责。
接入流程
- 准备服务端调用方。 配置调用方标识、签名密钥和可访问路径,将凭据保存在客户后端。
- 同步用户与业务群。 用稳定业务标识建立映射,按业务变更同步资料和成员关系。
- 签发 IM Session。 客户业务登录通过后,由后端为对应用户与设备取得 IM Session,交给 SDK。
- 连接消息与业务事件。 SDK 直连 REST/WebSocket;业务后端按需发送扩展消息、接收 Webhook。
鉴权与可靠调用
- Server API 使用 HMAC-SHA256 签名,结合时间戳、nonce 与调用方路径权限校验。
- 同一业务动作重试复用幂等键与原请求内容,同时生成新的时间戳、nonce 与签名。
- Webhook 使用独立的验签格式;接收方按事件 ID 去重。启用可靠投递后,可结合重试与授权重放处理失败事件。
- API 返回发送结果不等于用户已读;业务流程与通信状态分别处理。