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