有人能说说 node.js net.socket 和 socket.io 的区别在哪吗

JavaScript08

有人能说说 node.js net.socket 和 socket.io 的区别在哪吗,第1张

socket.io是一个WebSocket协议的实现,用它你可以进行websocket通信,这是应用层

node.js net.socket是系统socket接口,用它你可以操作linux socket,这是传输层

再补充一点websocket: http://tools.ietf.org/html/rfc6455

websocket协议本质上也是使用系统socket,它是把socket引入了http通信,也就是不使用80端口进行http通信。它的目的是建立全双工的连接,可以用来解决服务器客户端保持长连接的问题。

socket.io只是websocket协议的一种实现。除此之外,HTML5也对websocket定义了对应的API,由浏览器等客户端程序实现它。这样最上层的web应用程序就能直接使用websocket连接了。

两个都是基于异步的。nodejs主要通过回调来完成异步,通过调用一个异步操作开始的函数,并指定操作完成时执行的函数。await async是基于任务的异步编程,用同步的代码结构来编写异步方法,由编译器来完成上下文切换等操作,写出的异步代码和同步代码差异很小。

如果是这个提示的话:

Error: This socket has been ended by the other party

at Socket.writeAfterFIN [as write] (net.js:274:12)

at broadcast (C:\nodejs\app.js:19:15)

at Socket.<anonymous>(C:\nodejs\app.js:60:5)

at Socket.EventEmitter.emit (events.js:95:17)

at Socket.<anonymous>(stream_readable.js:710:14)

at Socket.EventEmitter.emit (events.js:92:17)

at emitReadable (_stream_readable.js:382:10)

at emitReadable (_stream_readable.js:378:5)

at readableAddChunk (_stream_readable.js:143:7)

at Socket.Readable.push (_stream_readable.js:113:10)

是延时发送造成的,结束了延时发送就找不到socket了!