我目前正在研究构建一个在线连接的用户超过10k的聊天系统。我遇到了技术和方法,如jabber(XMPP),websockets,长轮询,推送。就我而言,考虑到用户数量,长轮询可能不起作用。我知道有很多方法可以实现这一目标。我也知道facebook和Google聊天系统是在XMPP上开发的。
如果有人能指出我正确的方向,我真的很感激。我相信所有这些方法和技术都很好,取决于项目的规模。我绝对需要性能和可扩展性。
答案 0 :(得分:2)
我已将Socket.io与NodeJS一起用于此类聊天应用程序。它在中等服务器上扩展到超过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服务器都会处理那么多用户。