编者按: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(可扩展消息传递和状态协议)协议来处理局域网和Internet 上的所有消息传递系统。 Ejabberd 的服务器使用包容性插件模块:
一对一聊天。
关联真实列表和保存列表。
多用户聊天(MUC) - 用户之间的聊天。
隐私设置和帐户欺骗。
信息档案管理(MAM)
FreeBSD(一种免费使用的UNIX 操作系统):FreeBSD 负责每天在WhatsApp 平台上发送的数十亿条消息。由于FreeBSD 网络堆栈的高度复杂性和可靠性,Contus Fly 选择了FreeBSD 操作系统。 FreeBSD 在安装方面有很多优势,并且可以轻松创建二进制包。
YAWS(网络服务器):它完全用Erlang 编写。 Contus Fly 使用嵌入式模式,其中YAWS 作为嵌入式Web 服务器运行。 YAWS 系统具有高效处理并发进程的高性能。
Lighttpd(网络服务器):Lighttpd 是一种开源网络服务器,可为Contus Fly 提供更好的性能。 WhatsApp 部署了轻量级的Lighttpd 服务器,使应用程序安全、灵活、快速和兼容。
PHP(服务器端编程语言):Contus Fly使用PHP开源语言来保证应用程序的性能和可靠性,并结合强大的Web开发技术AJAX,以AJAX显示数据,提供即时信息。
BEAM:BEAM 是一个运行Erlang 的虚拟机。 Contus Fly使用BEAM接口实现调度、运行、传递信息、管理内容、多核等功能。
自定义XMPP 服务器:Contus Fly 通过减少关键字字节将XMPP 服务器编码到应用程序的功能中。该技术用于实现实时信息交换。
4lQbfIjkLiPAE%3D\" img_width=\"664\" img_height=\"400\" image_type=\"1\" mime_type=\"image/jpeg\">
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):
强化的地理位置集成与实时位置形成了相当有力的互动作用。
-
日历同步(Geolocation Integration):
日历同步确保用户对事件和任务的全面了解,提醒用户有哪些计划还未提上日程。
-
多平台聊天(Geolocation Integration):
跨平台信息系统使用户无论是在办公桌旁还是在路上都能及时获取工作信息。
-
程序内购买(In-app Purchase):
通过在数字商店上架自己的应用程序来使其变现,增加用户的应用收入。
WhatsApp所不具备的特性:
除了上述这些内置功能外,Contus Fly还基于用户期望和聊天解决方案类型进行整合。
1. 配置用户访问和管理用户账户:
->用户邀请制
->开放访问
->管理员确认
->推送通知
->邮件&邮件订阅
->短讯服务
3. 根据用户需要创建定制聊天组:
->开放创建群组权限
->只有管理员才能创建群组
->用户可以查看并请求加入某个群组
->相关用户只可查看与自己圈子有关的群组
Contus Fly还提供了各种各样帮助用户赚钱的方式:
-
完全免费
-
应用内支付
-
应用广告
-
赞助广告
-
订阅服务
“在未来,每一个聊天应用的注册者都拥有大展拳脚的空间。”
如果你想要建立一个类似于WhatsApp但是却又添加了新功能的现代即时聊天应用,那么就应该在添加动态功能的这条路上一直走下去。
原文链接:https://hackernoon.com/how-to-build-your-own-real-time-chat-app-like-whatsapp-9d1d058afd5b
编译组出品。编辑:郝鹏程