带有Socket.io模块和XMPP的Node.js - 优点和缺点

时间:2011-05-05 05:30:45

标签: node.js socket.io xmpp

我有一个带有Socket.io聊天应用程序的Node.js和一个XMPP Openfire聊天系统。我期待用Node.js和Socket.io替换XMPP。但是,有人说,带有Socket.io的Node.js会出现问题,如果服务器崩溃并重新上线,则会产生瓶颈综合症,或者可能无法重新连接10,000个在线用户。这是真的吗?

另一个问题。在什么情况下XMPP比Socket.io更合适,反之亦然?

4 个答案:

答案 0 :(得分:13)

XMPP is an open-standard communications protocol for message-oriented middleware(维基百科)。

Node.js是一个基于JavaScript的开发人员工具,用于创建网络服务。

这两件事并没有真正比较。如果您使用socket.io构建了一个聊天应用程序,它可能会遇到瓶颈问题,但这很大程度上取决于您的应用程序代码。

一般来说,如果你想超越简单的基于浏览器的聊天,我会认真考虑XMPP(又名Jabber),因为XMPP客户端随时可用于所有操作系统。

答案 1 :(得分:11)

我认为Node.js的优点在于它是用通常理解的语言(Javascript)而不是XMPP服务器编写的,常见的是用erlang / Java编写的,这些服务器并没有被广泛理解。

如果您想完全控制服务器行为并编写聪明的模块,那么我怀疑该节点将是最适合您的解决方案。

Node.js可能会失败的地方是,如果您需要扩展到一台服务器之外,您将不得不将其设计到您的节点应用程序中。我相信eJabberd和Openfire都支持群集开箱即用,所以你需要做的就是把另一台服务器联机,配置两台服务器互相通话,然后离开。

我对你的总体建议是,如果当前的XMPP系统对你来说运行正常,那么我就会坚持下去。

答案 2 :(得分:4)

正如mikl所说,XMPP是一个协议而不是应用程序框架。

您可以在NodeJS上构建XMPP应用程序,就像在NodeJS上构建SocketIO应用程序一样。不同之处在于OpenFire和ejabberd已经存在并经过了一段时间的测试,而不是你自己构建的一些解决方案。这并不意味着你应该这样做,但它确实意味着你应该有一个良好的商业案例。

如果您正确设置基础架构,则可以在几乎任何框架中执行此操作。为了减少峰值期间的延迟,您应该对任何系统可能需要的请求进行负载均衡。

答案 3 :(得分:3)

您还可以检查设计用于node.js的xmppjs库。 http://xmppjs.prosody.im/