在编写 nodejs 代理服务器时,我注意到数据可能会在数据写入另一个套接字端之前多次进入我的代理。每次我的数据进来时,我都会调用 socket.write(); ...
但是,由于发送的异步性质,我不确定 nodejs 是否保证传输数据的顺序与我安排写入的顺序相同。
有谁知道 nodejs 在这种情况下的行为?
如果订单不能保证,那么我将不得不缓冲数据,直到我收到数据成功发送回调。
最佳答案
Node.js 是单线程的,一次只能做一件事。它有一个按顺序处理的回调队列。
可以在此处找到更多信息: http://howtonode.org/understanding-process-next-tick 。
只要您在接收数据时调用 socket.write ,它就会按顺序到达。如果您考虑一下,如果它不这样做,那么 Node 将无法用作网络服务器。例如,一个简单的 Node 快速站点可能使用 fs.readfile 从磁盘异步读取文件,并使用 socket.write 将其返回给浏览器。如果无法保证顺序,则可能无法正确返回该文件。
从 Node 0.8.14 文档:
http://nodemanual.org/latest/nodejs_ref_guide/net.html#net.Socket.write
和
关于node.js - nodejs 套接字写入顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13855368/