Android即時通訊系列文章(0)起源:對接觸工作以來所涉及過的即時通訊技術(shù)的全面復(fù)盤

為什么想要寫這個系列的文章?

2018年年末,由于所在公司的戰(zhàn)略方向轉(zhuǎn)向東南亞一隅,意欲打造一款面向東南亞市場的即時通訊應(yīng)用,并且高層在綜合考量之后決定采用自研技術(shù),于是機(jī)緣巧合之下我被安排到IM項目組,從而再次接觸到了即時通訊技術(shù)。

為什么說是再次呢?因為我之前參與開發(fā)的兩個商業(yè)項目同樣運用到了即時通訊技術(shù),一個是用到 XMPP+Openfire+Smack,另外一個是用到MQTT,只是當(dāng)時由于工作經(jīng)驗的關(guān)系都只停留在環(huán)境的搭建和API的調(diào)用,并沒有很深入地去挖掘更底層的技術(shù)原理。而現(xiàn)在項目采用的則是WebSocket——提供客戶端和服務(wù)端全雙工通信(即雙方可同時向?qū)Ψ桨l(fā)送消息)的一種應(yīng)用層協(xié)議。接觸過的同類技術(shù)多了,自然免不了會去比較三者之間的優(yōu)劣。而我正是以此為切入點,在工作之余對接觸工作以來所涉及過的即時通訊技術(shù)進(jìn)行了全面復(fù)盤。

大到網(wǎng)絡(luò)通信協(xié)議、數(shù)據(jù)傳輸格式的選型,小到消息實時性、一致性的保持,從在線、離線推送到多端同步、消息漫游,即時通訊技術(shù)的博大精深無不令我嘖嘖稱奇,從而得以以更高的架構(gòu)師的角度去審視當(dāng)時是為什么這樣設(shè)計的,做到理論知識與代碼實踐的一一對應(yīng)。也理解了即時通訊技術(shù)作為的底層架構(gòu),為帶有社交屬性的應(yīng)用提供實時互動功能的價值所在。

而隨著現(xiàn)在項目穩(wěn)定迭代到了3.x的版本,即將把IM模塊剝離出來作為獨立SDK接入到新項目,我也得以回顧之前的寫的代碼并進(jìn)行適度優(yōu)化。并想以此為契機(jī),將學(xué)習(xí)過的知識以技術(shù)博客的形式進(jìn)行輸出,強(qiáng)迫自己把知識點組合起來,從而對即時通訊技術(shù)有更透徹的理解,促使自己變得更專業(yè)。之前寫的幾篇技術(shù)文章,只是作為重新回歸撰寫技術(shù)博客的練手之作,而完整出一個系列的文章則一直是我想要達(dá)成的一個成就,希望我能堅持下去。

看這個系列的文章你可以得到什么?

由于我本身是Android開發(fā)者,因此我的文章會更多地以Android開發(fā)或客戶端開發(fā)的角度去講述,對于服務(wù)端高并發(fā)、高可用等場景,因為不屬于我的專業(yè)范圍內(nèi)所以我也不會展開來講。除了會普及一些業(yè)內(nèi)普遍認(rèn)同的、具有通用性的技術(shù)方案外,還會就這些方案在移動設(shè)備上實現(xiàn)的局限性進(jìn)行具體分析。眾所周知,客戶端作為收發(fā)消息的終端設(shè)備,是直接面向用戶的,但是移動設(shè)備又是資源受限的,這意味著在移動設(shè)備上實現(xiàn)體驗良好的即時通訊功能是極富挑戰(zhàn)性的。我會在文章中把我實際開發(fā)中遇到的困難跟你闡述,希望我踩過的坑你不會再次踩到。

由于是第一次寫系列文章,而即時通訊又是一門比較龐大的技術(shù),所以我暫時不會把整個系列所有要寫的東西全部羅列出來,當(dāng)然還是初步列了要切入的幾個點,并計劃就一個點寫對應(yīng)的一篇文章,后面如果看哪一個點可以單獨摘出來講述的話我會繼續(xù)補(bǔ)充,目前規(guī)劃的幾篇文章包括:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容