如何開發(fā)一款像 WhatsApp 一樣的即時(shí)聊天應(yīng)用?(聊天工具whatsapp)
編者按:WhatsApp的成功令眾多業(yè)內(nèi)人士競(jìng)相效仿。本文作者Veeraeswari在“How to Build your Own Real-time Chat App like WhatsApp?”一文中講述了Contus Fly在試圖超越WhatsApp過程中的所作所為。
如果你想創(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í)通信市場(chǎng)的大壁江山,但是躍躍欲試者依然有機(jī)會(huì)開發(fā)出某些WhatsApp并不滿足用戶需求的聊天應(yīng)用。
考慮到上述目標(biāo),我們并不想要一款類似于WhatsApp的傳統(tǒng)聊天應(yīng)用,而是想要一款為所有聊天場(chǎng)景提供理想解決方案,并使其在同類別軟件中脫穎而出的現(xiàn)代聊天應(yīng)用。
你有沒有認(rèn)真思考過,什么技術(shù)能夠支撐WhatsApp成為如此標(biāo)桿式的聊天應(yīng)用?
下文是Contus的后端組件架構(gòu)情況,其基于此而試圖搭建一個(gè)類似于WhatsApp的即時(shí)聊天應(yīng)用。
Erlang(一種編程語(yǔ)言):這是WhatsApp這款史詩(shī)級(jí)聊天軟件所使用的主要編程語(yǔ)言。Erlang編程語(yǔ)言因其性能、速度和延展性而廣受好評(píng)。Contus Fly也基于這種編程語(yǔ)言構(gòu)建,使其垃圾收集器通過允許立即進(jìn)行代碼更新而獲得不同功能。而這有助于Contus Fly以非常短的延遲度處理大量消息。
Ejabberd(即時(shí)消息服務(wù)器):Contus Fly使用開源jabber提高操作效率,為預(yù)期結(jié)果提供優(yōu)化支持。其使用XMPP(可擴(kuò)展消息傳遞和到場(chǎng)協(xié)議)協(xié)議來處理所有局域網(wǎng)和互聯(lián)網(wǎng)上的信息傳遞系統(tǒng)。Ejabberd的服務(wù)器使用包容性強(qiáng)的插件模塊:
- 一對(duì)一聊天。
- 關(guān)聯(lián)真實(shí)與即存名單。
- 存儲(chǔ)與轉(zhuǎn)發(fā)(脫機(jī)信息)。
- 個(gè)人事件協(xié)議(PEP)和消息類型規(guī)范。
- 多用戶聊天(MUC)—用戶聊天。
- 隱私設(shè)置與賬戶欺騙。
- 信息檔案管理(MAM)
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)勢(shì)眾多,并且提供了簡(jiǎn)單的二進(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ù)器端編程語(yǔ)言):Contus Fly使用PHP開源語(yǔ)言確保應(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語(yǔ)言編寫的實(shí)時(shí)數(shù)據(jù)庫(kù)管理系統(tǒng)。Mnesia是一個(gè)可以存儲(chǔ)信息、文件、圖像、視頻、文檔以及在程序上運(yùn)行其他多媒體文件的軟數(shù)據(jù)庫(kù)。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é)議提供語(yǔ)音通信和多媒體會(huì)話的技術(shù)分類。
(2)視頻聊天(Video Chats)
使人們可以直接通過語(yǔ)音/視頻聊天,不再需要中間連接。
(3)群組聊天(Group Calls)
聊天應(yīng)用為用戶提供更深入的語(yǔ)音/視頻聊天工具,以與其他用戶建立聯(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、語(yǔ)音、動(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)購(gòu)買(In-app Purchase)
通過在數(shù)字商店上架自己的應(yīng)用程序來使其變現(xiàn),增加用戶的應(yīng)用收入。
WhatsApp所不具備的特性
除了上述這些內(nèi)置功能外,Contus Fly還基于用戶期望的聊天方案類型進(jìn)行整合。
1. 配置用戶訪問和管理用戶賬戶:
- 用戶邀請(qǐng)制
- 開放訪問
- 管理員確認(rèn)
2. 以最優(yōu)方式向用戶通知活躍聯(lián)系人
- 推送通知
- 郵件&郵件訂閱
- 短訊服務(wù)
3. 根據(jù)用戶需要?jiǎng)?chuàng)建定制聊天組:
- 開放創(chuàng)建群組權(quán)限
- 只有管理員才能創(chuàng)建群組
- 用戶可以查看并請(qǐng)求加入某個(gè)群組
- 相關(guān)用戶只可查看與自己圈子有關(guān)的群組
Contus Fly還提供了各種各樣幫助用戶賺錢的方式:
- 完全免費(fèi)
- 應(yīng)用內(nèi)支付
- 應(yīng)用廣告
- 贊助廣告
- 訂閱服務(wù)
“在未來,每一個(gè)聊天應(yīng)用的注冊(cè)者都擁有大展拳腳的空間?!?/p>
如果你想要建立一個(gè)類似于WhatsApp但是卻又添加了新功能的現(xiàn)代即時(shí)聊天應(yīng)用,那么就應(yīng)該在添加動(dòng)態(tài)功能這條路上一直走下去。
譯者:木木子,由36氪編譯組出品。編輯:郝鵬程
譯文地址:http://36kr.com/p/5136992.html
本文由 @郝鵬程 授權(quán)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來源于網(wǎng)絡(luò)