【问题标题】:chat application: pubsubhubbub vs xmpp聊天应用程序:pubsubhubbub vs xmpp
【发布时间】:2011-01-28 21:23:20
【问题描述】:

我不确定构建聊天应用程序的最佳堆栈。目前我正在考虑两个主要选项:

  • 脸书龙卷风
    • 缺点:不使用主聊天协议xmpp而是pubsubhubbub
    • 优点:我真的很喜欢它的简单开发(网络服务器 + 网络框架); pubsubhubbub 作为协议似乎也比 xmpp 更简单;我知道蟒蛇
  • xmpp + 博世、旁遮普语、ejabberd
    • 缺点:不懂 erlang;总体似乎有点难以开发
    • 优点:使用 xmpp 协议

聊天应用需要具备以下条件:

  • 私人消息
  • 公共房间
  • 私人房间
  • 房间的聊天记录(不是永久的,只是最近的 n 条消息)
  • html 嵌入
  • 聊天室网址

这两个选项似乎都是可扩展的,所以我并不担心(我们也在考虑在亚马逊的 ec2 中运行该应用程序)。我知道有一个项目使用 tornado 构建 xmpp 服务器,但它还没有准备好用于生产,而且我们的截止日期也没有那么大。基本上,我主要担心的是开发的难易程度与后来使用 pubsubhubbub 开发聊天应用程序的遗憾,但我在某处读到 PubSubHubbub 最终可能会取代 XMPP,因为 REST 取代了 SOAP - 那么你怎么看?

【问题讨论】:

  • 请注意,PubSubHubbub (PuSH) 甚至与 XMPP 不相近。 PuSH 是一个非常基本的发布-订阅协议,非常类似于 Dialback 用于身份验证。 XMPP 太多了,以至于它不适合这个评论框。

标签: chat xmpp tornado websub


【解决方案1】:

您可以使用带有 WebSocket 的 REST API 来实现发布者/订阅者架构。

Atmosphereswagger sockets 是不错的 Java 框架,您可以将其插入您的 Jersey REST api 并实现此目的。

Atmospehre 的创建者 jfarcand 的博客有一个使用这些技术构建的 example of chat application

【讨论】:

    【解决方案2】:

    如果您不需要通过 XMPP 进行联合,但希望快速进行原型设计和部署以及开箱即用的可扩展性,请查看 Lift Web 框架的 chat server in one page of code 示例。

    【讨论】:

      【解决方案3】:

      PubSubHubbub(PuSH) 从一开始就不适合聊天应用程序。它有时被称为“用于 Web 的 IM”。我建议您浏览一下这张幻灯片:Realtime Ruby for the Realtime Web by igrigorik

      真正的问题是您想要获得多实时?如果您想要速度,那么 XMPP 是最佳选择。(500 毫秒)而 PuSH 取决于您的提要及其中继方式。请记住,在内容到达订阅者之前,PuSH 总共需要 4 个网络跃点。

      更大的麻烦是PuSH 依赖于HTTP Post。即使你最终设计了一个基于 PuSH 的聊天应用程序,并在稍后阶段说,你想让它可用于其他设备,甚至作为桌面应用程序,你也必须使用 XMPP 中继相同的内容。您将失去的另一个地方是,您的聊天应用程序用户很难从他们选择的任何其他 IM 登录。

      【讨论】:

        【解决方案4】:

        Facebook Tornao 根本不使用 PubSubHubbub!

        选择 XMPP,它专为满足您的需求而设计。 Tornado 并不是专门为此而设计的,而是针对一般的长轮询请求而设计的。

        无需使用旁遮普语,ejabbed http-bind 模块现在做得很好。此外,你不需要学习 Erlang,就像你在编写使用 Apache 的 web 应用程序时不需要学习 C 一样:) 查看 Aristochat 之类的内容。您唯一需要使用的是 XMPP 服务器和聊天室的配置,然后是客户端(在浏览器中)的 Javascript。

        【讨论】:

        【解决方案5】:

        去 XMPP。

        开箱即用,ejabberd 支持您的所有要求。您不需要查看任何 erlang 并为 ejabberd 编写自定义模块。 使用 Strophejs,浏览器中的 XMPP(这显然是您正在做的)非常棒。

        关于 pubsubhubbub 替换 XMPP 的最后一个问题,不要指望它。 XMPP 已有 10 多年的历史,在客户端和服务器上都是可靠的开源和专有的可互操作实现,并且非常优雅,因此不会消失。

        您正在开发一个聊天应用程序,这就是 XMPP 的用途。

        【讨论】:

        • Strophe 看起来不错(Aristochat 也使用它)。谢谢:)
        猜你喜欢
        • 2023-01-28
        • 1970-01-01
        • 1970-01-01
        • 2018-02-17
        • 2012-02-12
        • 2015-06-14
        • 1970-01-01
        • 2015-05-04
        • 2012-10-11
        相关资源
        最近更新 更多