开发聊天/实时Web应用程序

时间:2012-09-28 20:23:29

标签: xmpp chat push polling

我目前正在研究构建一个在线连接的用户超过10k的聊天系统。我遇到了技术和方法,如jabber(XMPP),websockets,长轮询,推送。就我而言,考虑到用户数量,长轮询可能不起作用。我知道有很多方法可以实现这一目标。我也知道facebook和Google聊天系统是在XMPP上开发的。

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

2 个答案:

答案 0 :(得分:2)

我已将Socket.ioNodeJS一起用于此类聊天应用程序。它在中等服务器上扩展到超过10K并发用户,并且还有很大的发展空间。

这取决于你的限制,等等。

  • 您打算使用哪种硬件?
  • 哪种操作系统可以为您的服务器供电?
  • 您要定位哪些客户端平台?
  • 您是否有适合的现有基础设施?
  • 您是否拥有以前选择的编程语言?
  • 您的团队成员拥有的现有技能以及您的团队在必要时采用新平台和语言的能力。

在做出决定时,请考虑以上所有因素。

就个人而言,我发现XMPP已经足够了,但对我来说有点臃肿。 YMMV。

答案 1 :(得分:1)

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

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

使用XMPP将允许您构建用于实现聊天系统的成熟技术,并允许您选择要在“引擎盖下”使用的传输。您实际上并未说过是否需要基于http的传输,但使用XMPP,您可以使用基于stock tcp套接字的传输或基于http的传输(BOSH),并且知道它将来也将支持WebSockets。

另一个好处当然是这是一个广泛使用的标准,允许在几乎所有流行的(而不是那么流行的)语言和平台中重用existing clients, servers and libraries

与您引用的数字相比,可伸缩性并不是太大的问题,因为大多数(可能是所有)现有的xmpp服务器都会处理那么多用户。