一轧邪、基本介紹
MobileIMSDK - 微信小程序端是一套基于微信原生 WebSocket 的即時(shí)通訊庫(kù):
1)超輕量級(jí)刽脖、無(wú)任何第 3 方庫(kù)依賴(lài)(開(kāi)箱即用);
2)純 JS 編寫(xiě)闲勺、ES6 語(yǔ)法曾棕、高度提煉,簡(jiǎn)單易用菜循;
3)基于微信原生 WebSocket API翘地,簡(jiǎn)潔優(yōu)雅;
4)支持運(yùn)行于任何支持微信小程序的手機(jī)端癌幕;
5)能與MobileIMSDK的各種客戶(hù)端完美互通衙耕;
6)可應(yīng)用于微信小程序中的消息推送、客服聊天勺远、企業(yè) OA橙喘、IM 等場(chǎng)景。
二胶逢、與 MobileIMSDK 的關(guān)系
MobileIMSDK - 微信小程序端是基于微信原生 WebSocket 協(xié)議的MobileIMSDK配套客戶(hù)端庫(kù)厅瞎。
MobileIMSDK是一套專(zhuān)為移動(dòng)端開(kāi)發(fā)的開(kāi)源原創(chuàng) IM 通信層框架:
歷經(jīng) 8 年、久經(jīng)考驗(yàn)初坠;
超輕量級(jí)和簸、高度提煉,lib 包 50KB 以?xún)?nèi)碟刺;
精心封裝锁保,一套 API 同時(shí)支持UDP、TCP、WebSocket三種協(xié)議(可能是全網(wǎng)唯一開(kāi)源的)爽柒;
客戶(hù)端支持iOS吴菠、Android、標(biāo)準(zhǔn) Java浩村、H5做葵、小程序、Uniapp(開(kāi)發(fā)中..)心墅;
服務(wù)端基于 Netty蜂挪,性能卓越、易于擴(kuò)展嗓化;??
可與姊妹工程MobileIMSDK-Web無(wú)縫互通實(shí)現(xiàn)網(wǎng)頁(yè)端聊天或推送等;??
可應(yīng)用于跨設(shè)備谬哀、跨網(wǎng)絡(luò)的聊天 APP刺覆、企業(yè) OA、消息推送等各種場(chǎng)景史煎。
以下是MobileIMSDK的最新通信架構(gòu)圖:
PS:MobileIMSDK的客戶(hù)端庫(kù)一直在持續(xù)開(kāi)發(fā)和升級(jí)中谦屑,目前?基于 Uniapp 的 MobileIMSDK 客戶(hù)端正在開(kāi)發(fā)中?。
三篇梭、設(shè)計(jì)目標(biāo)
直接使用原生的微信小程序 WebSocket 有以下問(wèn)題和劣勢(shì):
1)功能有限:沒(méi)有心跳鼻獬龋活、斷線(xiàn)重連恬偷、消息送達(dá)保證(重傳和去重)等即時(shí)通訊關(guān)鍵算法和邏輯悍手;
2)API 簡(jiǎn)陋:在如此有限的原生 API下,能邏輯清晰地實(shí)現(xiàn)并組合心跳迸刍迹活坦康、斷線(xiàn)重連、消息送達(dá)保證等算法诡延,需要相當(dāng)高的技術(shù)掌控力;
3)邏輯耦合:經(jīng)驗(yàn)欠缺的開(kāi)發(fā)人員,會(huì)將 WebSocket 通信與前端 UI 界面代碼混在一起夭谤,使得 UI 界面的重構(gòu)、維護(hù)采蚀、改版都非常困難。
針對(duì)以上問(wèn)題纲爸,而?MobileIMSDK - 微信小程序端庫(kù)將讓開(kāi)發(fā)者專(zhuān)注于 UI 應(yīng)用層的開(kāi)發(fā)妆够,網(wǎng)絡(luò)通信層的專(zhuān)業(yè)代碼交由 SDK 開(kāi)發(fā)人員神妹,從而解偶 UI 前端和通信層的邏輯耦合性冕茅,大大降低技術(shù)復(fù)雜性。
MobileIMSDK - 微信小程序端庫(kù)的設(shè)計(jì)目標(biāo)是為您的開(kāi)發(fā)帶來(lái)以下便利:
1)界面與通信解偶:UI 界面與網(wǎng)絡(luò)通信代碼解耦乍楚,UI 界面的重構(gòu)、維護(hù)徒溪、改版都非常容易和優(yōu)雅串绩;
2)輕量級(jí)和兼容性:受益于堅(jiān)持原生微信小程序 WebSocket API顷牌,簡(jiǎn)潔輕量窟蓝,無(wú)需任何額外依賴(lài);
3)核心內(nèi)聚和收斂:得益于長(zhǎng)期的提煉和經(jīng)驗(yàn)積累冯袍,SDK 核心層高度封裝康愤,開(kāi)發(fā)者無(wú)需理解復(fù)雜算法即可簡(jiǎn)單上手。
4)純 JS 輕量級(jí)實(shí)現(xiàn):SDK 為純 JS 編寫(xiě)每庆、ES6 語(yǔ)法,無(wú)重量級(jí)框架和庫(kù)依賴(lài)腮出,可干凈利落地對(duì)接各種既有系統(tǒng)帖鸦。
四、技術(shù)亮點(diǎn)
輕量易使用:超輕量級(jí) —— 純 JS 編寫(xiě)且無(wú)任何第 3 方庫(kù)依賴(lài)胚嘲,高度提煉 —— 簡(jiǎn)單易用作儿;
代碼現(xiàn)代感:盡可能優(yōu)先使用 ES6 語(yǔ)法,摒棄舊式 JS 語(yǔ)法的年代感馋劈;
兼容性很好:基于微信原生 WebSocket API攻锰,可很好地運(yùn)行于支持微信小程序的手機(jī)端;
斷網(wǎng)恢復(fù)能力:擁有網(wǎng)絡(luò)狀況自動(dòng)檢測(cè)妓雾、斷網(wǎng)自動(dòng)治愈的能力娶吞;
送達(dá)保證機(jī)制:完善的 QoS 消息送達(dá)保證機(jī)制(多重保障),不漏過(guò)每一條消息械姻;
通信協(xié)議封裝:實(shí)現(xiàn)了一個(gè)對(duì)上層透明的即時(shí)通訊通信協(xié)議模型妒蛇;
身份認(rèn)證機(jī)制:實(shí)現(xiàn)了簡(jiǎn)單合理的身份認(rèn)證機(jī)制;
完善的 log 信息:在開(kāi)發(fā)調(diào)試階段,確保每一個(gè)算法關(guān)鍵步驟都有日志輸出绣夺,讓您的運(yùn)行調(diào)試更為便利吏奸;
界面代碼解耦:實(shí)現(xiàn)了 UI 界面代碼與 SDK 網(wǎng)絡(luò)通信代碼解偶,防止界面代碼跟 IM 核心代碼混在一起乐导,不利于持續(xù)升級(jí)苦丁、重用和維護(hù);
聊天協(xié)議兼容:實(shí)現(xiàn)了與MobileIMSDK 各種客戶(hù)端完全兼容的協(xié)議模型物臂。
五旺拉、文件組成
SDK代碼文件概覽:
SDK代碼文件用途說(shuō)明:
六、技術(shù)交流?
學(xué)習(xí)和資料:點(diǎn)擊進(jìn)入棵磷、bug和建議:點(diǎn)擊進(jìn)入
七蛾狗、Demo運(yùn)行截圖
1)Demo的真機(jī)運(yùn)行效果和功能說(shuō)明圖:
2)Demo在模擬器下的運(yùn)行效果:
3)Demo真機(jī)運(yùn)行實(shí)拍圖:
八、詳盡開(kāi)發(fā)者手冊(cè)
① 開(kāi)發(fā)者手冊(cè)(網(wǎng)頁(yè)版):MobileIMSDK的微信小程序端開(kāi)發(fā)快速入門(mén)?
② 開(kāi)發(fā)者手冊(cè)(PDF精編版):
九仪媒、引用資料
[3]MobileIMSDK開(kāi)源IM框架源碼(Github地址點(diǎn)此)