我应该使用哪个 node.js 套接字引擎?

Posted

技术标签:

【中文标题】我应该使用哪个 node.js 套接字引擎?【英文标题】:Which node.js socket engine should I use? 【发布时间】:2014-03-10 22:37:50 【问题描述】:

我正在着手构建一个跨网站和 android 应用程序的实时聊天应用程序。由于我想防止对各种 API 调用进行连续轮询,因此我想使用 websockets(我没有经验),在此过程中,我认为学习 node.js 是一个好主意。所以我需要开始为 node.js 使用 websockets 库。为此,我看到有很多选项。我读得最多的是socket.io。

在 SO 附近,我还读到 socket.io v0.9 有很多错误,我看到多个关于 engine.io 是 socket.io 版本 1.0 中 socket.io 的新后端的参考资料,据说“指日可待” ”。不过,所有这些消息都来自 2012 年 (this one for example),当我查看 socket.io website 时,我发现它们仍然是 v0.9,这让我想知道一些事情:

socket.io 是否仍在积极开发中? socket.io 是否是一个可行的选择,还是我需要驻留在另一个库中? 您会推荐哪一个以便于启动,或者 node.js 现在是否实现了良好的套接字(例如使用 net.Socket)?

欢迎所有提示!

【问题讨论】:

***.com/questions/16392260/… 的答案可能已有五个月的历史,但足以回答您的问题。 @chbrown - 我也阅读了该答案,但这主要是所有可能性的列表,而不是真正给出使用哪个的优缺点和建议。同样,很高兴看到这些选项,但我不清楚哪些选项比其他选项更好/更容易。因此提出了这个问题。 【参考方案1】:

socket.io 还在积极开发中吗?

https://github.com/learnboost/socket.io

master:7 小时前创作

所以它现在真的在开发中。

socket.io 是一个可行的选择吗,还是我需要驻留在另一个库中?

我们在几个项目中都在使用 socket.io,没关系。也许你应该调整你的心跳值。对我们来说是:

app.io = io.listen(app);
logger.info('Setting up basic configuration.');
app.io.set('heartbeat timeout', 50);
app.io.set('heartbeat interval', 20);
app.io.set('browser client minification', true);
app.io.set('store', new io.RedisStore(iostoreSettings)); // also don't use in-memory store, it is hardly not recommended

【讨论】:

感谢您的回答。只是一个后续问题;你说socket.io是“好的”,这对我来说听起来不太热情。您介意分享一下为什么您认为它“还可以”,而不是“很棒”吗? @kramer65 我认为这很棒)清楚。我们遇到了一些麻烦(例如重新连接或正确处理未经身份验证的套接字客户端),但所有这些都为我们解决了。 好的,谢谢。虽然我通常希望获得“它只是有效”的评论,但我认为我们会选择 socket.io。最后一个问题:您通常使用最新的 github 版本,还是使用旧版本? @kramer65 我们正在使用最后一个 npm 版本。但是你应该注意到,github 文档是针对即将发布的版本,而 socket.io(网站 :-)上的文档是针对当前(可在 npm 获得)0.9 版本的。

以上是关于我应该使用哪个 node.js 套接字引擎?的主要内容,如果未能解决你的问题,请参考以下文章

Web 套接字和 Flash 套接字客户端连接到一个 Node.js

在重新连接、socket.io、node.js 时重用套接字 id

如何递归遍历目录,通过 node.js 中的套接字发送所有文件名?

在 node.js 中,如何创建一个自动绑定到可用端口的 UDP 套接字?

Socket.IO 对 Node.js 有啥作用

Node.js / Server.js 套接字实现问题