我有一个使用Node.js和Socket.io的聊天应用程序以及一个XMPP Openfire聊天系统。我希望用Node.js和Socket.io替换XMPP。然而,有人说,如果服务器崩溃并重新上线,Node.js和Socket.io会出现瓶颈综合征或者可能无法重新连接它的10000个在线用户。这是真的吗?
另一个问题是,在什么情况下使用XMPP比Socket.io更合适,反之亦然?
XMPP是一种开放标准的通信协议,用于消息中间件(维基百科)。
Node.js是一个基于JavaScript的开发工具,用于创建网络服务。
这两个东西并不真正可比。如果您使用socket.io构建了聊天应用程序,则有可能会遇到瓶颈症候群问题,但它很大程度上取决于您的应用程序代码。
总的来说,如果您想超越简单的基于浏览器的聊天,我会认真考虑使用XMPP(又名Jabber),因为各操作系统上都有XMPP客户端可用。
我认为Node.js的优点在于它是用一种常见的语言(JavaScript)编写而成,而常见的XMPP服务器则是用Erlang/Java等非常流行的语言编写,这些语言并不像JavaScript那样被广泛理解。
如果你想完全控制服务器的行为并编写聪明的模块,那么我认为Node.js会是最好的解决方案。
然而,如果你需要扩展到多台服务器,那么Node.js可能会有问题。我相信eJabberd和Openfire都支持开箱即用的集群功能,所以你只需要将另一个服务器上线,配置两台服务器进行通信,就可以愉快地使用了。
我的总体建议是,如果当前的XMPP系统已经能够很好地满足你的需求,那么我建议你继续使用它。