2017-08-30 108 views
1

Node.js的child_process文檔說如何使用sendHandle不丟失數據?

可以傳遞給subprocess.send(可選sendHandle參數)是通過TCP服務器或Socket對象子進程...這接受任何數據和緩衝在套接字中將不會被髮送給孩子。

因此,如果將套接字傳遞給子進程,如何不丟失緩衝的數據?

在發送它以檢查緩衝數據之前,我在套接字上調用了socket.read()。它返回null,但數據仍然丟失。

如何在不丟失數據的情況下將套接字從一個進程傳遞到另一個進程?

回答

0

唯一的解決辦法是永遠不要從套接字讀取數據。例如,internal/cluster/round_robin_handle模塊

this.handle = this.server._handle; 
this.handle.onconnection = (err, handle) => this.distribute(err, handle); 

在這將覆蓋新的TCP手柄正常processessing,那麼孩子的過程能做到這一點,而不是。

(我會使用cluster模塊,除了我需要一些定製,像最少的連接負載平衡。)