我应该为任何聊天应用考虑 XMPP
Posted
技术标签:
【中文标题】我应该为任何聊天应用考虑 XMPP【英文标题】:Should I consider XMPP for any chat app 【发布时间】:2014-11-09 04:37:26 【问题描述】:对于具有扩展功能(与聊天无关,但与实时数据相关)并支持基于Websocket
和SocketIO
的服务器的聊天应用,我真的需要集成或考虑@987654323 @。对于简单的文件共享(S3 存储)、聊天和其他数据通信(服务器状态等)来说,XMPP 是不是有点过头了。
在我的应用程序中,自定义数据是从不同的存储中获取的,在某些情况下需要推送到Message Queue
,并将上传的文件存储在 S3 中。所有这些都不支持 XMPP,所以无论如何,如果我选择它作为后端,我将不得不定制很多 XMPP 服务器实现。
您认为我最好自己实现所有这些,完全跳过 XMPP。 或者,XMPP 中是否有任何我可能因为考虑而遗漏的内容。
应用需要支持:
-
Websocket
长轮询 ajax
S3 存储
Redis / Aerospike DB
REST 调用托管在不同机器上的其他服务
android 客户端
ios 客户端
基于 Qt 的 Windows 客户端
【问题讨论】:
【参考方案1】:XMPP,以前的 Jabber,基于 XML。我是 XML 的老手,但即使我也能看出它在创建打开和关闭元素标签时很啰嗦和多余,而且还需要大量的打开和关闭引号。
如今,尤其是在 NoSQL 领域,似乎更流行的是对数据的语法更简洁的编码,例如 JSON 或 BSON(二进制 JSON)。
JSON:http://www.json.org/ 二进制 JSON:http://bsonspec.org/
在 XML 的架构、语法、解析或基于 Web 的具体化中是否有特定的东西是您想要使用 XMPP 的原因?否则,您可能会发现 JSON 是一种更简单、更有效的数据编码方式。
如果这个答案有用,请告诉我。
【讨论】:
我在 2014 年 11 月做出了这个回答。你决定做什么?您的项目现在的状态如何?告诉我! 我选择了带有 Redis、Python (Tornado)、Mongo 和所有自定义实现的 Websocket。我本可以将 XMPP 与 ejabberd 一起使用,但这需要我学习 Erlang(我无法理解那种语言)。简单地使用 ejabberd/xmpp 将使我的聊天应用程序在线,但我必须实现我的身份验证、存储、与主应用程序的集成以及许多需要的功能。数据传输采用 JSON 格式。除了 Chrome 的一些问题之外,它的工作非常稳定。 酷!很高兴你能正常运行。如果您需要 Aerospike 来帮助扩展,请大声疾呼。否则,你看起来就像你的方式很好。最良好的祝愿! -皮特。以上是关于我应该为任何聊天应用考虑 XMPP的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 XMPP 和 GCM 在 Android 中制作聊天应用程序