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