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

对于具有扩展功能(与聊天无关,但与实时数据相关)并支持基于WebsocketSocketIO 的服务器的聊天应用,我真的需要集成或考虑@987654323 @。对于简单的文件共享(S3 存储)、聊天和其他数据通信(服务器状态等)来说,XMPP 是不是有点过头了。

在我的应用程序中,自定义数据是从不同的存储中获取的,在某些情况下需要推送到Message Queue,并将上传的文件存储在 S3 中。所有这些都不支持 XMPP,所以无论如何,如果我选择它作为后端,我将不得不定制很多 XMPP 服务器实现。

您认为我最好自己实现所有这些,完全跳过 XMPP。 或者,XMPP 中是否有任何我可能因为考虑而遗漏的内容。

应用需要支持:

  1. Websocket
  2. 长轮询 ajax
  3. S3 存储
  4. Redis / Aerospike DB
  5. REST 调用托管在不同机器上的其他服务
  6. Android 客户端
  7. iOS 客户端
  8. 基于 Qt 的 Windows 客户端

【问题讨论】:

    标签: android iphone xmpp chat real-time-updates


    【解决方案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 来帮助扩展,请大声疾呼。否则,你看起来就像你的方式很好。最良好的祝愿! -皮特。
    猜你喜欢
    • 2018-02-17
    • 2023-01-28
    • 2011-01-28
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    相关资源
    最近更新 更多