【发布时间】:2019-01-06 14:08:45
【问题描述】:
我最近遇到了 Node 的 net 模块,我想知道使用这个模块是否等同于使用 socket.io 模块。 它们之间有什么区别? 谢谢!
【问题讨论】:
标签: javascript node.js sockets socket.io node-modules
我最近遇到了 Node 的 net 模块,我想知道使用这个模块是否等同于使用 socket.io 模块。 它们之间有什么区别? 谢谢!
【问题讨论】:
标签: javascript node.js sockets socket.io node-modules
我最近遇到了 Node 的 net 模块,我想知道使用这个模块是否等同于使用 socket.io 模块。
不,它们甚至不是同一个东西。
Node 的 net 模块是一个基本的底层 TCP 和 UDP 接口。它允许您与某个端点建立 TCP 或 UDP 连接,然后通过该连接从该端点发送或接收数据。这些是原始 TCP 连接。您定义通信中使用的协议、数据格式和所有约定。 TCP 所做的只是将数据从一端传送到另一端。
socket.io 有点位于网络堆栈的另一端。
socket.io
webSocket
TCP
webSocket 建立在 TCP 之上。它有自己独特的连接方案,从带有某些自定义标头的 http 连接开始,然后请求“升级”到 webSocket 协议。如果服务器批准升级,则启动 http 连接的同一 TCP 套接字将转换为 webSocket 协议。 webSocket 协议有自己独特的加密和数据格式。
Socket.io 建立在 webSocket 协议之上(意味着它使用 webSocket 协议进行通信)。 Socket.io 有它自己独特的连接方案(从 http 轮询开始,然后在允许的情况下切换到常规 webSocket),并且它有一个额外的数据结构,它建立在 webSocket 数据帧之上,它定义了一个消息名称和一个数据包和一个其他一些家务。
socket.io 和 webSocket 都受浏览器 Javascript 支持。浏览器 Javascript 不支持纯 TCP 或 UDP 连接。因此,如果您希望与浏览器通信,则不会使用纯 TCP。
【讨论】: