開(kāi)源即時(shí)通訊IM框架MobileIMSDK的微信小程序端技術(shù)概覽

一轧邪、基本介紹

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í)支持UDPTCPWebSocket三種協(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精編版):

九仪媒、引用資料

[1]微信小程序開(kāi)發(fā)者手冊(cè)

[2]MobileIMSDK開(kāi)源框架的API文檔

[3]MobileIMSDK開(kāi)源IM框架源碼Github地址點(diǎn)此

[4]開(kāi)源輕量級(jí) IM 框架 MobileIMSDK 的微信小程序端已發(fā)布

[5]開(kāi)源即時(shí)通訊框架MobileIMSDK的微信小程序端開(kāi)發(fā)者手冊(cè)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沉桌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子算吩,更是在濱河造成了極大的恐慌留凭,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偎巢,死亡現(xiàn)場(chǎng)離奇詭異蔼夜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)压昼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)求冷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窍霞,你說(shuō)我怎么就攤上這事匠题。” “怎么了但金?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵韭山,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冷溃,道長(zhǎng)掠哥,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任秃诵,我火速辦了婚禮续搀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菠净。我一直安慰自己禁舷,他們只是感情好彪杉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著牵咙,像睡著了一般派近。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洁桌,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天渴丸,我揣著相機(jī)與錄音,去河邊找鬼另凌。 笑死谱轨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吠谢。 我是一名探鬼主播土童,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼工坊!你這毒婦竟也來(lái)了献汗?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤王污,失蹤者是張志新(化名)和其女友劉穎罢吃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體昭齐,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刃麸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了司浪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡把沼,死狀恐怖啊易,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饮睬,我是刑警寧澤租谈,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站捆愁,受9級(jí)特大地震影響割去,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昼丑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一呻逆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菩帝,春花似錦咖城、人聲如沸茬腿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)切平。三九已至,卻和暖如春辐董,著一層夾襖步出監(jiān)牢的瞬間悴品,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工简烘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苔严,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓夸研,卻偏偏與公主長(zhǎng)得像邦蜜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亥至,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容