编者按: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正在使用。这一技术的性能远远超出了人们的期望,其极有可能实现储存任何数量的数据。
现在,我们需要了解一款全面的聊天应用需要具备的功能:
网络电话(VOIP Phone Calls):
网络电话是通过互联网协议提供语音通信和多媒体会话的技术分类。
视频聊天(Video Chats):
使人们可以直接通过语音/视频聊天,不再需要中间连接。
群组聊天(Group Calls):
聊天应用为用户提供更深入的语音/视频聊天工具,以与其他用户建立联系。
端到端加密聊天(End-to-End Chat Encryption):
一种杜绝第三方渗透的用户安全加密功能。通过高级加密技术,优先考虑用户私有数据的安全。
云同步服务(Cloud Service Sync):
云资源同步平台同步监控、更新、存储和扩展用户环境。
多媒体支持(Multimedia Support):
确保视频、图像、GIF、语音、动画、文档、联系人和位置等各种数据格式的文件传输。
自我销毁信息(Self — Destructing Messages):
通过选中群中的某一个用户并向其发送信息,以确保其他人无法查看。
地理位置集成(Geolocation Integration):
强化的地理位置集成与实时位置形成了相当有力的互动作用。
日历同步(Calendar Synchronization):
日历同步确保用户对事件和任务的全面了解,提醒用户有哪些计划还未提上日程。
多平台聊天(Multi-platform Chatting):
跨平台信息系统使用户无论是在办公桌旁还是在路上都能及时获取工作信息。
程序内购买(In-app Purchase):
通过在数字商店上架自己的应用程序来使其变现,增加用户的应用收入。
除了上述这些内置功能外,Contus Fly还基于用户期望的聊天方案类型进行整合。
1. 配置用户访问和管理用户账户:
->用户邀请制
->开放访问
->管理员确认
2. 以最优方式向用户通知活跃联系人
->推送通知
->邮件&邮件订阅
->短讯服务
3. 根据用户需要创建定制聊天组:
->开放创建群组权限
->只有管理员才能创建群组
->用户可以查看并请求加入某个群组
->相关用户只可查看与自己圈子有关的群组
完全免费
应用内支付
应用广告
赞助广告
订阅服务
“在未来,每一个聊天应用的注册者都拥有大展拳脚的空间。”
如果你想要建立一个类似于WhatsApp但是却又添加了新功能的现代即时聊天应用,那么就应该在添加动态功能这条路上一直走下去。
原文链接:https://hackernoon.com/how-to-build-your-own-real-time-chat-app-like-whatsapp-9d1d058afd5b
编译组出品。编辑:郝鹏程