現狀:註冊登錄已完成,擬用OkHttp + PHP + MySQL輪詢最新消息,但意識到效率低、服務器壓力大。
| 方案 | 原理 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|---|
| HTTP短輪詢 | 客戶端定時請求 | 簡單、穿透防火牆 | 延遲高、資源浪費、服務器壓力大 | 極簡原型、低頻通知 |
| HTTP長輪詢/Comet | 服務端hold住請求 | 較即時、兼容性好 | 佔用連接、實現複雜 | 不支援WebSocket環境 |
| WebSocket | 全雙工長連接 | 真即時、低開銷、雙向 | 需WS服務端、代理/防火牆可能攔截 | 現代App標配 |
| XMPP (ejabberd/Openfire) | 基於XML流的IM標準協議 | 成熟、擴展性強、支援群聊/漫遊 | XML冗長、學習曲線陡、運維成本高 | 大規模IM系統 |
| 第三方IM SDK (融雲/環信/LeanCloud) | 封裝好底層協議+推送通道 | 開箱即用、含離線推送、文件/語音/視頻 | 費用、數據托管、定製受限 | 中小團隊、快速上線 |
┌─────────┐ HTTPS/WS ┌──────────────┐ 內部RPC ┌────────────┐
│ App客戶端 │ ←────────────────→ │ IM SDK服務端 │ ←──────────────→ │ 業務服務器 │
│ (融雲SDK) │ (消息收發/推送) │ (融雲/環信雲) │ (回調/狀態同步) │ (用戶/關係) │
└─────────┘ └──────────────┘ └────────────┘
AppKey/AppSecretimplementation 'io.rong:imkit:2.13.0'RongIM.init(this) 在Application.onCreate()/user/getToken生成,App端RongIM.connect(token)ConversationListActivity/ConversationActivity