socket.io 和 Node 的 Net 模块的区别

Difference between socket.io and Node's Net module

我最近接触到 Node 的 net 模块,我想知道使用这个模块是否等同于使用 socket.io 模块。 它们之间有什么区别? 谢谢!

I have recently come upon Node's net module, I was wondering if using this module would be the equivalent of using the socket.io module.

不,它们甚至不是同一件事。

Node 的网络模块是一个基本的低级 TCP 和 UDP 接口。它允许您与某个端点建立 TCP 或 UDP 连接,然后通过该连接从该端点发送或接收数据。这些是原始 TCP 连接。您定义通信中使用的协议、数据格式和所有约定。 TCP 所做的只是将您的数据从一端传送到另一端。

socket.io 有点在网络堆栈的另一端。

socket.io
webSocket
TCP

webSocket 建立在 TCP 之上。它有自己独特的连接方案,从具有特定自定义 headers 的 http 连接开始,然后向 webSocket 协议请求 "upgrade"。如果服务器批准升级,则启动 http 连接的同一 TCP 套接字将转换为 webSocket 协议。 webSocket 协议有它自己独特的加密和数据格式。

Socket.io 建立在 webSocket 协议之上(意味着它使用 webSocket 协议进行通信)。 Socket.io 有它自己独特的连接方案(从 http 轮询开始,然后如果允许则切换到常规 webSocket)并且它有一个额外的数据结构,它建立在 webSocket 数据帧之上,定义了消息名称和数据包和一些其他的家务。


socket.io 和 webSocket 均受浏览器 Javascript 支持。浏览器 Javascript 不支持纯 TCP 或 UDP 连接。因此,如果您希望与浏览器通信,则不会使用纯 TCP。