Node.js 和 socket.io 的混淆

Posted

技术标签:

【中文标题】Node.js 和 socket.io 的混淆【英文标题】:Node.js and socket.io confusion 【发布时间】:2012-12-07 12:42:54 【问题描述】:

我经常看到诸如“Node.JS + socket.io 教程”之类的标题。即使在我购买的 Node.js Beginner 书中,它也告诉我要下载 socket.io,所以我真的很困惑。

它们之间有什么区别?为什么我不能只使用 Node.JS "OR" Socket.io 来编写我的应用程序?如果我可以编码,为什么人们在标题中使用 socket.io 加 node.js?

我真的很困惑,所以任何形式的回复都将不胜感激。

【问题讨论】:

【参考方案1】:

node.js 是一个平台。

socket.io 只是一个处理websockets 的框架,如果您正在node.js 之上构建应用程序。

socket.io 需要node.jsnode.js 不需要socket.io

编辑:Ryan Dahl(node.js 的创建者)的介绍视频非常有启发性,有助于解决这种困惑:http://www.youtube.com/watch?v=jo_B4LTHi3I

【讨论】:

【参考方案2】:

Socket.io 是基于 node.js 的实时应用程序框架。因此,如果您想使用 socket.io,两者都是必需的。您可以编写自己的代码来做同样的事情,但 socket.io 是跨浏览器的,使用它可以帮助您节省时间。

【讨论】:

所以node.js就像Apache,而socket.io是php @IcarusCocksson:嗯...node.js 就像 Apache 和 PHP,而 socket.io 就像 。 嗯,我想我明白了。我将使用 node.js,但 socket.io 将帮助我处理 websockets 等。对吗? Socket.IO 也是客户端库。有几个不同的后端,所以基于 Socket.io 的应用程序不需要有 Node.js 组件。 那么为什么不直接使用 Express 和模板呢?【参考方案3】:

socket.io 是一个库,除了实际平台 node.js。 它就像计算机的软件。没有电脑就无法使用软件。

Node.js - 是一个平台,关注语言 - 使用 V8 的 javascript 可视化(将 JS 脚本解释为计算机可理解形式的 JavaScript 引擎)。以及许多其他平台组件。

虽然 socket.io 只是使用平台的功能,但实现了一些很酷的自己的功能,这些功能是添加到 node.js 中的。它只是一个库,您可以与核心一起使用。

在现实世界中,它就像 hoover - 是 node.js,而喷嘴是 socket.io。当然这是粗略的例子,事情要复杂得多。但如你所见,没有核心的喷嘴是毫无意义的。

Node.js 使您的 JavaScript 使用自己的功能运行。虽然 socket.io 是您使用或不使用的东西 - 由您选择。

【讨论】:

【参考方案4】:

我也在学习 nodejs、socket.io、express 等的细节。到目前为止我所理解的是,Nodejs 是托管整个项目(可以在客户端和服务器端)的大骨干,使用节点命令,如 > node servercode.js 等。它可以为websockets服务器、Http服务器甚至https服务器打开端口。

但是 socketio 以异步事件驱动的方式提供客户端和服务器端之间的通信链接(想想 ajax)。

希望对你有帮助

【讨论】:

以上是关于Node.js 和 socket.io 的混淆的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS,Express 与 Socket.io 交互

node.js、socket.io 和 SSL

Node.js、多线程和 Socket.io

如何将 Asterisk ARI 与 socket.io 和 Node.js 一起使用

node.js + socket.io:拍卖网站开发

Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling