如果你想創(chuàng)建一個(gè)像WhatsApp這樣偉大的應(yīng)用,當(dāng)然必須先要了解WhatsApp的技術(shù)和構(gòu)架。 我們需要從第一次進(jìn)入這個(gè)小型聊天群進(jìn)行私密聊天的時(shí)刻開始回溯起。之后,社交應(yīng)用進(jìn)入大眾視野,為人們提供了基礎(chǔ)性的溝通工具。而到現(xiàn)在,即時(shí)通信軟件使人與人之間保持著迅速且密切的聯(lián)系。除此之外,即時(shí)通訊軟件的便利性和舒適度也得到了提高。 人們熱情擁抱著人氣日益飆升的眾多聊天應(yīng)用軟件,當(dāng)然也包括WhatsApp。研究發(fā)現(xiàn),大多數(shù)人更希望有這么一款聊天應(yīng)用軟件橫空出世,其為用戶添加了額外的貼心功能。 現(xiàn)在我們是時(shí)候開始卷起袖子開發(fā)一款類似于WhatsApp這樣“舉世震驚”的軟件了。 現(xiàn)代聊天軟件的演變需要提到,一款現(xiàn)代聊天應(yīng)用必須具備能夠滿足任何聊天方式的功能。據(jù)近期消息稱,研發(fā)出WhatsApp這類即時(shí)聊天軟件的公司正在進(jìn)行相關(guān)人工智能和機(jī)器人技術(shù)的試驗(yàn)。一款理想的聊天應(yīng)用應(yīng)該是那種同時(shí)為企業(yè)級(jí)通信、個(gè)人通信、業(yè)務(wù)開發(fā)通信和電子商務(wù)通信提供解決方案的軟件。 WhatsApp的成功鼓動(dòng)了眾多投資商和開發(fā)者想要復(fù)制WhatsApp的成功,這沒什么值得驚訝之處。Contus Fly就是其中一例,Contus想要開發(fā)一款類似WhatsApp的聊天應(yīng)用,并會(huì)基于用戶對(duì)這類平臺(tái)的功能期待進(jìn)行新功能的研發(fā)。雖然WhatsApp已經(jīng)占據(jù)了即時(shí)通信市場的大壁江山,但是躍躍欲試者依然有機(jī)會(huì)開發(fā)出某些WhatsApp并不滿足用戶需求的聊天應(yīng)用。 考慮到上述目標(biāo),我們并不想要一款類似于WhatsApp的傳統(tǒng)聊天應(yīng)用,而是想要一款為所有聊天場景提供理想解決方案,并使其在同類別軟件中脫穎而出的現(xiàn)代聊天應(yīng)用。 你有沒有認(rèn)真思考過,什么技術(shù)能夠支撐WhatsApp成為如此標(biāo)桿式的聊天應(yīng)用? 下文是Contus的后端組件架構(gòu)情況,其基于此而試圖搭建一個(gè)類似于WhatsApp的即時(shí)聊天應(yīng)用。 Erlang(一種編程語言):這是WhatsApp這款史詩級(jí)聊天軟件所使用的主要編程語言。Erlang編程語言因其性能、速度和延展性而廣受好評(píng)。Contus Fly也基于這種編程語言構(gòu)建,使其垃圾收集器通過允許立即進(jìn)行代碼更新而獲得不同功能。而這有助于Contus Fly以非常短的延遲度處理大量消息。 Ejabberd(即時(shí)消息服務(wù)器):Contus Fly使用開源jabber提高操作效率,為預(yù)期結(jié)果提供優(yōu)化支持。其使用XMPP(可擴(kuò)展消息傳遞和到場協(xié)議)協(xié)議來處理所有局域網(wǎng)和互聯(lián)網(wǎng)上的信息傳遞系統(tǒng)。Ejabberd的服務(wù)器使用包容性強(qiáng)的插件模塊:
FreeBSD(一種可免費(fèi)使用的UNIX操作系統(tǒng)):WhatsApp平臺(tái)上每天發(fā)送的信息量達(dá)數(shù)十億條,其中就有FreeBSD功勞。由于FreeBSD的網(wǎng)絡(luò)堆疊精巧度高且可靠性強(qiáng),Contus Fly選擇了FreeBSD操作系統(tǒng)。FreeBSD在安裝方面優(yōu)勢眾多,并且提供了簡單的二進(jìn)制包的創(chuàng)建。 YAWS(web服務(wù)器):其完全由Erlang編寫。Contus Fly使用嵌入模式,在此模式中YAWS作為嵌入式web服務(wù)器運(yùn)行。YAWS系統(tǒng)具備高效處理并發(fā)進(jìn)程的高性能表現(xiàn)。 Lighttpd(web服務(wù)器):Lighttpd是一個(gè)為Contus Fly提供更好性能的開源web服務(wù)器。WhatsApp上部署了輕量級(jí)的Lighttpd 服務(wù)器,以使應(yīng)用具備安全、靈活、快速和兼容的特性。 PHP(服務(wù)器端編程語言):Contus Fly使用PHP開源語言確保應(yīng)用的性能和可靠性,并通過與強(qiáng)大的web開發(fā)技術(shù)AJAX相結(jié)合,用AJAX顯示數(shù)據(jù),以確保信息的即時(shí)性。 BEAM:BEAM是一個(gè)運(yùn)行Erlang的虛擬機(jī)。Contus Fly使用BEAM接口實(shí)現(xiàn)調(diào)度、運(yùn)行、傳遞信息、管理內(nèi)容和多核等功能。 Custom XMPP Server:Contus Fly通過減少關(guān)鍵字字節(jié)將XMPP服務(wù)器編碼到應(yīng)用程序的功能中。該技術(shù)用以實(shí)現(xiàn)實(shí)時(shí)信息交換。 HTML5 WebSockets:HTML5 WebSockets是HTML5的一個(gè)特性,其數(shù)據(jù)通過套接字發(fā)送,用于在web瀏覽器與服務(wù)器之間建立牢固的、更快更持久的連接。 Mnesia DB:這是一個(gè)由Erlang語言編寫的實(shí)時(shí)數(shù)據(jù)庫管理系統(tǒng)。Mnesia是一個(gè)可以存儲(chǔ)信息、文件、圖像、視頻、文檔以及在程序上運(yùn)行其他多媒體文件的軟數(shù)據(jù)庫。Contus Fly正在使用。這一技術(shù)的性能遠(yuǎn)遠(yuǎn)超出了人們的期望,其極有可能實(shí)現(xiàn)儲(chǔ)存任何數(shù)量的數(shù)據(jù)。 一款成功聊天應(yīng)用需要具備的特性:現(xiàn)在,我們需要了解一款全面的聊天應(yīng)用需要具備的功能: (1)網(wǎng)絡(luò)電話(VOIP Phone Calls) 網(wǎng)絡(luò)電話是通過互聯(lián)網(wǎng)協(xié)議提供語音通信和多媒體會(huì)話的技術(shù)分類。 (2)視頻聊天(Video Chats) 使人們可以直接通過語音/視頻聊天,不再需要中間連接。 (3)群組聊天(Group Calls) 聊天應(yīng)用為用戶提供更深入的語音/視頻聊天工具,以與其他用戶建立聯(lián)系。 (4)端到端加密聊天(End-to-End Chat Encryption) 一種杜絕第三方滲透的用戶安全加密功能。通過高級(jí)加密技術(shù),優(yōu)先考慮用戶私有數(shù)據(jù)的安全。 (5)云同步服務(wù)(Cloud Service Sync) 云資源同步平臺(tái)同步監(jiān)控、更新、存儲(chǔ)和擴(kuò)展用戶環(huán)境。 (6)多媒體支持(Multimedia Support) 確保視頻、圖像、GIF、語音、動(dòng)畫、文檔、聯(lián)系人和位置等各種數(shù)據(jù)格式的文件傳輸。 (7)自我銷毀信息(Self — Destructing Messages) 通過選中群中的某一個(gè)用戶并向其發(fā)送信息,以確保其他人無法查看。 (8)地理位置集成(Geolocation Integration) 強(qiáng)化的地理位置集成與實(shí)時(shí)位置形成了相當(dāng)有力的互動(dòng)作用。 (9)日歷同步(Calendar Synchronization) 日歷同步確保用戶對(duì)事件和任務(wù)的全面了解,提醒用戶有哪些計(jì)劃還未提上日程。 (10)多平臺(tái)聊天(Multi-platform Chatting) 跨平臺(tái)信息系統(tǒng)使用戶無論是在辦公桌旁還是在路上都能及時(shí)獲取工作信息。 (11)程序內(nèi)購買(In-app Purchase) 通過在數(shù)字商店上架自己的應(yīng)用程序來使其變現(xiàn),增加用戶的應(yīng)用收入。 WhatsApp所不具備的特性除了上述這些內(nèi)置功能外,Contus Fly還基于用戶期望的聊天方案類型進(jìn)行整合。 1. 配置用戶訪問和管理用戶賬戶:
2. 以最優(yōu)方式向用戶通知活躍聯(lián)系人
3. 根據(jù)用戶需要?jiǎng)?chuàng)建定制聊天組:
如果你想要建立一個(gè)類似于WhatsApp但是卻又添加了新功能的現(xiàn)代即時(shí)聊天應(yīng)用,那么就應(yīng)該在添加動(dòng)態(tài)功能這條路上一直走下去。 譯者:木木子,由36氪編譯組出品。編輯:郝鵬程 譯文地址:http://36kr.com/p/5136992.html
|
|