如何不使用sendHandle丢失数据?
Node.js的child_process文档说
可以传递给subprocess.send()的可选sendHandle参数用于将TCP服务器或套接字对象传递给subprocess…在套接字中接收和缓冲的任何数据都不会发送给subprocess。
所以如果传递一个套接字到一个subprocess,我怎么不会丢失caching的数据呢?
在发送它之前,我在套接字上调用了socket.read()
来检查缓冲数据。 它返回null
,但数据仍然丢失。
如何将套接字从一个进程传递到另一个进程而不丢失数据?
唯一的解决办法是永远不要从套接字读取数据。 例如,在internal / cluster / round_robin_handle模块中
this.handle = this.server._handle; this.handle.onconnection = (err, handle) => this.distribute(err, handle);
这将覆盖新的TCP句柄的正常处理,所以一个subprocess可以代替它。
(我会使用cluster
模块,除了我需要一些定制,像最less连接负载平衡。)