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了!