2012-03-07 162 views
7

我找不到任何关于使用node.js聊天服务器V.S.运行的聊天客户端之间比较的合理基准。一个使用xmpp的客户端。使用websocket + node.js与本地客户端进行聊天的服务器与xmpp

我知道node.js是异步的,据我所知,xmpp也是如此。但是,我主要关心的是具有相同数量的并发用户的性能。

我需要这些信息来编写一个android应用程序。想知道使用这两种系统的意见和优点/缺点。

在此先感谢。

+0

您对预计有多少并发用户有任何想法吗? (约?) – TheHippo 2012-03-07 14:19:08

+0

用Node.js的,我认为4000,如果它是XMPP我想到2000年大部分在相同的硬件 – 2012-03-07 15:10:39

+0

这取决于硬件很明显,但如果你想XMPP将仅支持半连接数上相同的硬件,我相信你错了。硬统计数据取决于应用和使用情况,但我知道单处理器XMPP设置很容易处理4K。即使jabber.org运行在单台服务器上,在高峰时段使用20K连接。鉴于你所说的你不会使用许多XMPP功能,你的应用程序可能会比“普通”的XMPP服务器(比如jabber.org)更进一步。 – MattJ 2012-03-07 15:40:39

回答

1

虽然我明白你在问什么,但你试图比较服务器端Javascript实现(Node.js)和消息传递协议(XMPP)。

有许多现成的XMPP服务器和许多客户端库已经写入。由于这些是您将要与之合作的具体内容,因此如果您正在考虑使用XMPP,那么应该对它们进行评估,然后将其与其他问题的解决方案进行比较。

如果你自己在Node和Websocket上实现了一些东西,那么你需要处理XMPP已经提供的所有东西,比如认证,加密,应用协议等等,以及所有的服务器端路由逻辑。许多XMPP服务器还支持群集 - 透明地在单个域后面运行多台服务器。

最终选择是你的选择,因为你最了解你的特定应用程序。您应该比较解决方案,不仅是单节点性能,还有开发时间和可伸缩性等因素。

+0

当然MattJ,你完全正确的可扩展性。但是,我需要知道两个平台之间的性能差异。认证,路由..还没有在我的最高优先级列表中。 – 2012-03-07 14:29:48

+0

我的观点是他们应该是。您的应用程序需求应该预先决定,然后关于实现的性能问题应该稍后再做。您还会知道Node.js + websocket可能缺少XMPP提供的某些功能。但是,如果您确实需要XMPP的功能,Google和Facebook就能证明它可以成功扩展。 – MattJ 2012-03-07 14:33:56

+0

我看过xmpp提供的功能。正如我所说的,每台机器的性能和并发总用户数对我来说更重要。 – 2012-03-07 15:09:49

1

我已经为客户建立了几个Node.js的聊天服务,虽然我可以说很容易获得一个基本的聊天服务,并且运行Node.js,但您可能会花费大量时间重新发明轮子如果你选择走这条路。像eJabberd这样的XMPP服务器有很多内置的功能,你不需要重建。身份验证,多用户聊天,审核(踢/禁止/忽略),用户喜好,日志记录等。

对于我工作过的项目,eJabberd肯定是矫枉过正,因为他们只需要基础知识,但是你应该仔细考虑你的使用案例,因为它做出了决定。

我正在考虑为XMPP创建一个Node.js Web客户端,以使类似于Campfire的东西,但是以eJabberd作为其后端。我并没有真正承诺要这样做,但我认为这将是一个获得两全其美的好方法。

1

这也要看是什么样的客户,你正在写的:基于浏览器的客户端使用BOSH是XMPP通过HTTP,它采用长轮询(类似彗星)。这会为每个客户端每30秒创建至少一个请求(取决于设置),在获得几千个客户端后开始累加。我有兴趣看到一个比较 - 似乎网络套接字应该有一个优势。

+0

当然,现在你可以通过websockets使用XMPP并获得两全其美的好处。 – Robin 2015-04-02 14:48:34

相关问题