【问题标题】:Node.js with Socket.io module vs XMPP - advantages and disadvantages带有 Socket.io 模块的 Node.js 与 XMPP - 优点和缺点
【发布时间】:2011-08-19 01:58:10
【问题描述】:

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

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

【问题讨论】:

    标签: node.js socket.io xmpp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        如果您想完全控制服务器行为并编写巧妙的模块,那么我怀疑 node 将是您的最佳解决方案。

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

        我对您的总体建议是,如果当前的 XMPP 系统对您来说运行良好,那么我会坚持使用它。

        【讨论】:

        • 感谢詹姆斯的意见。因此,如果 nodejs 托管在云服务器中,那将消除它对 Openfire 或 eJabberd 集群支持的不利影响。我们的 Openfire XMPP 服务器存在内存泄漏问题,您知道吗。
        • 但还是要自己编写和维护node.js解决方案
        • Socket.io 现在支持集群socket.io/#announcement,或者使用pubsub.io,一个用nodejs 编写的独立集群消息集线器
        • 暗示 Java 是一种晦涩的语言的搞笑加分!
        【解决方案4】:

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

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

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

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

        【讨论】:

        • 嘿 Mikl 感谢您的意见。是什么让您认为 nodejs 可能患有瓶颈综合症?
        • 我不认为 N​​ode.js 本身有固有的瓶颈,但是如果你在 Node.js 之上构建一个聊天服务器(Node 本身只是一个构建网络服务的工具包),它会必须非常仔细地设计,以便能够同时处理 10.000 个用户重新连接。主要问题是获取验证用户所需的所有数据,并向他们发送他们可能错过的任何聊天消息。这是几个数据库查询乘以 10.000。很少有系统可以在几秒钟内处理好这个问题。
        • 在 node.js 之上构建 xmmp 框架时,可扩展性是否存在问题
        猜你喜欢
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        相关资源
        最近更新 更多