我应该为任何聊天应用考虑 XMPP

Posted

技术标签:

【中文标题】我应该为任何聊天应用考虑 XMPP【英文标题】:Should I consider XMPP for any chat app 【发布时间】:2014-11-09 04:37:26 【问题描述】:

对于具有扩展功能(与聊天无关,但与实时数据相关)并支持基于WebsocketSocketIO 的服务器的聊天应用,我真的需要集成或考虑@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 android 应用程序

XMPP:只读多用户聊天

如何使用 XMPP 和 GCM 在 Android 中制作聊天应用程序

使用 xmpp 或任何其他框架在 ios 中使用谷歌帐户构建聊天应用程序[关闭]

使用 XMPP 的 Android 视频聊天

XMPP Smack 聊天应用程序中的多设备支持