聊天应用程序:pubsubhubbub vs xmpp

问题描述 投票:7回答:5

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

  • facebook龙卷风 缺点:不使用主聊天协议xmpp而是使用pubsubhubbub 专业人士:我非常喜欢它的开发简单性(webserver + webframework); pubsubhubbub作为协议似乎比xmpp更简单;我知道python
  • xmpp + bosch,旁遮普,ejabberd 缺点:不知道二郎;整体看起来有点难以发展 专业人士:使用xmpp协议

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

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

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

chat xmpp tornado pubsubhubbub
5个回答
11
投票

去寻找XMPP。

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

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

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


4
投票

Facebook Tornado根本不使用PubSubHubbub!

去寻找XMPP,它专为您所寻找的设计而设计。龙卷风并非专门用于此,而是针对长期轮询请求。

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


1
投票

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


0
投票

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

问题是你想要获得的实时性?如果你想要速度,那么XMPP是最好的选择。(500ms)而PuSH取决于你的饲料及其传递方式。请记住,在内容到达订阅者之前,PuSH总共有4个网络跃点。

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


0
投票

您可以将REST API与WebSocket一起使用来实现发布者/订阅者体系结构。

Atmosphereswagger sockets是很好的java框架,你可以插入你的Jersey REST api并实现这一目标。

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

© www.soinside.com 2019 - 2024. All rights reserved.