Xmpp 开发聊天/实时web应用程序

Xmpp 开发聊天/实时web应用程序,xmpp,chat,push,polling,Xmpp,Chat,Push,Polling,我目前正在研究建立一个聊天系统,拥有超过1万名在线用户。我遇到了一些技术和方法,比如jabber(XMPP)、WebSocket、长轮询和推送。就我现在所知,考虑到用户数量,长时间轮询可能不起作用。我知道有很多方法可以做到这一点。我还知道facebook和Google聊天系统是在XMPP上开发的 如果有人能给我指出正确的方向,我将不胜感激。我相信所有这些方法和技术都是好的,这取决于项目的规模。我绝对需要性能和可扩展性 我曾与一起使用,用于此类聊天应用程序。它在中等规模的服务器上扩展到超过1000

我目前正在研究建立一个聊天系统,拥有超过1万名在线用户。我遇到了一些技术和方法,比如jabber(XMPP)、WebSocket、长轮询和推送。就我现在所知,考虑到用户数量,长时间轮询可能不起作用。我知道有很多方法可以做到这一点。我还知道facebook和Google聊天系统是在XMPP上开发的

如果有人能给我指出正确的方向,我将不胜感激。我相信所有这些方法和技术都是好的,这取决于项目的规模。我绝对需要性能和可扩展性

我曾与一起使用,用于此类聊天应用程序。它在中等规模的服务器上扩展到超过10000个并发用户,并且有很大的增长空间

这取决于你的局限性

  • 你打算用什么样的硬件
  • 哪个操作系统将为您的服务器供电
  • 您的目标客户机平台是什么
  • 您是否有一个现有的基础架构需要将其融入其中
  • 您有以前选择的编程语言吗
  • 您的团队成员拥有的现有技能,以及您的团队在必要时采用新平台和语言的能力
在做决定时考虑以上所有因素


就我个人而言,我发现XMPP已经足够了,但就我的目的而言有点臃肿。YMMV.

你正在比较一个果篮和三种不同的橙子

XMPP是您提到的唯一一个设计用于支持聊天系统的协议(其中有许多协议)。其他只是异步消息传递协议/技术。XMPP已经支持通过http进行聊天。毫无疑问,当规范最终确定时,它还将支持WebSocket。实际上,已经编写了很多这样的版本,但在这一点上,它似乎是一个使用草稿的草稿,因此可能只有很少的实现(如果有的话)

使用XMPP将使您能够建立在一种经过验证的技术之上,以实现聊天系统,并允许您在“引擎盖下”选择要使用的交通工具。实际上,您还没有说是否需要基于http的传输,但是对于XMPP,您可以使用基于tcp套接字的传输,也可以使用基于http的传输(BOSH),因为您知道它将来也将支持WebSocket

当然,另一个好处是,这是一个广泛使用的标准,允许在几乎所有流行(但不是很流行)的语言和平台中重用


可伸缩性与您所引用的数字无关,因为大多数(可能是所有)现有xmpp服务器将处理这么多用户。

您可能希望从服务器端解决C10K问题。一种方法是nginx和感谢Ronalchn!这就是我正在做的。但是有了所有的选择,很难选择最合适的。这与我选择php框架时所经历的过程相同。有很多,但它们有一些局限性,比如可伸缩性。非常接近于重复感谢Lior的回复!我在做研究时遇到了Socket.io和NodeJS。在当前状态下:实现的语言是PHP,目标平台是浏览器,服务器很可能是Windows驱动的,这是一个新的基础设施。根据我的发现,为这类项目选择合适的技术至关重要。我以前用ajax做过类似的小事情。然而,我知道在这种情况下,这是行不通的。毫无疑问,推送服务器将是一种选择。基于这些事实,你仍然推荐Socket.io和NodeJS吗?@Charlie:我以前没有在Windows服务器上尝试过NodeJS,所以我真的不能对此发表评论。考虑到您的目标是浏览器,我认为NodeJS+Socket.io应该可以很好地实现这一目的。如果您真的需要扩展,我真的不会尝试任何与PHP相关的推送,因为PHP不适合这种体系结构!正如大家所知,我不是这方面的专家,也不是开发这类系统需要采取的方法。然而,事情开始明朗了。根据您的回答和研究,似乎我需要的不仅仅是一个http服务器(即apache)和一个数据库来处理类似的事情。我理解这一点,因为我以前在一个小项目中尝试过类似的方法,使用apache和Flash Media server(RTMP协议)通过http提供实时视频流。看来我现在也需要做类似的事情。我真的很感激XMPP上的信息!