如何不使用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连接负载平衡。)