IM 即时通讯
核心定位
IM 模組為你的平臺提供內建即時通訊能力——無需整合第三方 IM SDK(如環信、融雲),直接在系統內實現私聊、群聊、頻道推送和音視訊通話。特別適合需要「平臺內通訊」的場景,如電商客服、企業內部溝通、社群私信等。
一句話:讓你的使用者在你的平臺裡就能聊天,資料和體驗完全可控。
解決什麼問題
| 痛點 | IM 如何解決 |
|---|---|
| 第三方 IM SDK 費用高 | 自建 IM,零額外成本 |
| 使用者資料存在第三方 | 聊天資料在自己的資料庫 |
| 需要與業務系統打通 | 使用者體系、好友關係與業務聯動 |
| 音視訊通話能力 | 整合 LiveKit,支援 WebRTC 通話 |
使用者角色
graph LR
subgraph 角色
IM_USER["普通使用者
私聊/群聊
傳送文字/圖片/檔案/語音
音視訊通話"] IM_ADMIN["IM 管理員
管理群組
配置頻道
管理敏感詞
檢視訊息記錄"] end
私聊/群聊
傳送文字/圖片/檔案/語音
音視訊通話"] IM_ADMIN["IM 管理員
管理群組
配置頻道
管理敏感詞
檢視訊息記錄"] end
功能架構
graph TB
subgraph 核心功能["核心功能"]
MSG2["訊息中心
私聊/群聊
文字/圖片/檔案/語音/影片"] FRIEND["好友關係
新增/刪除/黑名單"] GROUP["群組管理
建立/加入/退出/禁言"] CHANNEL["頻道推送
公告/通知廣播"] CALL["音視訊通話
基於 LiveKit
WebRTC"] end subgraph 輔助功能 EMOJI["表情管理"] SENSITIVE["敏感詞過濾"] end subgraph 通訊層["通訊層"] WS["WebSocket 實時通訊
local / redis / rocketmq
/ kafka / rabbitmq"] end 核心功能 --> 通訊層 輔助功能 --> 核心功能
私聊/群聊
文字/圖片/檔案/語音/影片"] FRIEND["好友關係
新增/刪除/黑名單"] GROUP["群組管理
建立/加入/退出/禁言"] CHANNEL["頻道推送
公告/通知廣播"] CALL["音視訊通話
基於 LiveKit
WebRTC"] end subgraph 輔助功能 EMOJI["表情管理"] SENSITIVE["敏感詞過濾"] end subgraph 通訊層["通訊層"] WS["WebSocket 實時通訊
local / redis / rocketmq
/ kafka / rabbitmq"] end 核心功能 --> 通訊層 輔助功能 --> 核心功能
核心 ER 圖
erDiagram
IM_USER ||--o{ IM_MESSAGE : "傳送"
IM_USER ||--o{ IM_FRIEND : "好友關係"
IM_USER ||--o{ IM_GROUP_MEMBER : "群成員"
IM_GROUP ||--o{ IM_GROUP_MEMBER : "包含"
IM_GROUP ||--o{ IM_MESSAGE : "群訊息"
IM_CHANNEL ||--o{ IM_CHANNEL_MESSAGE : "頻道訊息"
IM_CHANNEL ||--o{ IM_CHANNEL_MEMBER : "頻道成員"
IM_MESSAGE {
bigint id PK
bigint from_user_id FK "傳送者"
bigint to_user_id FK "接收者"
bigint group_id FK "群組"
tinyint type "訊息型別"
text content "訊息內容"
datetime create_time "傳送時間"
}
IM_GROUP {
bigint id PK
varchar name "群名稱"
bigint owner_user_id FK "群主"
tinyint status "狀態"
}
IM_CHANNEL {
bigint id PK
varchar name "頻道名稱"
tinyint type "頻道型別"
}
資料庫表分組
| 分組 | 表數量 | 說明 |
|---|---|---|
| 訊息中心 | 2 表 | 訊息記錄、訊息會話 |
| 好友關係 | 2 表 | 好友、好友申請 |
| 群組管理 | 3 表 | 群組、群成員、群公告 |
| 頻道推送 | 3 表 | 頻道、頻道成員、頻道訊息 |
| 音視訊通話 | 2 表 | 通話記錄、通話參與人 |
| 其他 | 4 表 | 表情、敏感詞等 |
WebSocket 通訊模式
graph TB
subgraph 傳送模式["訊息傳送模式(可切換)"]
LOCAL["local
單機模式
開發除錯用"] REDIS3["redis
Redis 廣播
小規模叢集"] ROCKET2["rocketmq
RocketMQ
高吞吐"] KAFKA2["kafka
Kafka
大規模"] RABBIT2["rabbitmq
RabbitMQ
企業級"] end
單機模式
開發除錯用"] REDIS3["redis
Redis 廣播
小規模叢集"] ROCKET2["rocketmq
RocketMQ
高吞吐"] KAFKA2["kafka
Kafka
大規模"] RABBIT2["rabbitmq
RabbitMQ
企業級"] end
應用場景
| 場景 | 使用方式 |
|---|---|
| 電商客服 | 買家 ↔ 商家客服私聊 |
| 企業內部通訊 | 員工群聊、部門頻道 |
| 社群私信 | 使用者之間私聊 |
| 線上教育 | 學生 ↔ 老師、課程群聊 + 音影片 |
| 醫療諮詢 | 患者 ↔ 醫生私聊 + 音影片問診 |