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

时间:2018-07-30 10:33:37

标签: javascript node.js sockets socket.io node-modules

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

1 个答案:

答案 0 :(得分:2)

  

我最近遇到过Node的net模块,我想知道使用此模块是否等同于使用socket.io模块。

不,他们甚至都不是同一个人。

节点的网络模块是基本的底层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数据帧之上构建了一个附加的数据结构,该结构定义了消息名称,数据包和其他一些家政服务。


浏览器Javascript支持

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