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.js
但node.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 的混淆的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Asterisk ARI 与 socket.io 和 Node.js 一起使用
Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling