worker.disconnect()
曆史
| 版本 | 變化 | 
|---|---|
| v7.3.0 | 此方法現在返回對   | 
| v0.7.7 | 添加於:v0.7.7  | 
參數
- 返回: <cluster.Worker>  對 
worker的引用。 
在worker中,該函數將關閉所有服務器,等待這些服務器上的'close'事件,然後斷開IPC通道。
在主節點中,一條內部消息被發送到工作線程,導致它自己調用.disconnect()。
導致設置.exitedAfterDisconnect。
服務器關閉後,它將不再接受新的連接,但任何其他偵聽工作人員都可以接受連接。現有的連接將被允許照常關閉。當不再存在連接時,請參閱   ,通往工作人員的 IPC 通道將關閉,允許其正常終止。server.close() 
以上僅適用於服務端連接,客戶端連接不會被worker自動關閉,disconnect也不會等他們關閉後再退出。
在worker中,存在process.disconnect,但不是這個函數;它是   。disconnect() 
因為長期存在的服務器連接可能會阻止工作人員斷開連接,所以發送消息可能很有用,因此可以采取特定於應用程序的操作來關閉它們。如果在一段時間後沒有發出 'disconnect' 事件,則實現超時、殺死工作人員也可能很有用。
if (cluster.isPrimary) {
  const worker = cluster.fork();
  let timeout;
  worker.on('listening', (address) => {
    worker.send('shutdown');
    worker.disconnect();
    timeout = setTimeout(() => {
      worker.kill();
    }, 2000);
  });
  worker.on('disconnect', () => {
    clearTimeout(timeout);
  });
} else if (cluster.isWorker) {
  const net = require('node:net');
  const server = net.createServer((socket) => {
    // Connections never end
  });
  server.listen(8000);
  process.on('message', (msg) => {
    if (msg === 'shutdown') {
      // Initiate graceful close of any connections to server
    }
  });
}
相關用法
- Node.js Worker.isMainThread用法及代碼示例
 - Node.js Worker.exitedAfterDisconnect用法及代碼示例
 - Node.js Worker.send(message[, sendHandle[, options]][, callback])用法及代碼示例
 - Node.js Worker.isDead()用法及代碼示例
 - Node.js Worker用法及代碼示例
 - Node.js Writable Stream pipe事件用法及代碼示例
 - Node.js WritableStream用法及代碼示例
 - Node.js Writable Stream finish事件用法及代碼示例
 - Node.js Writable Stream unpipe事件用法及代碼示例
 - Node.js ServerHttp2Stream http2stream.pushStream(headers[, options], callback)用法及代碼示例
 - Node.js http2.Http2ServerRequest request.url用法及代碼示例
 - Node.js request.socket用法及代碼示例
 - Node.js assert.notEqual(actual, expected[, message])用法及代碼示例
 - Node.js tlsSocket.authorized用法及代碼示例
 - Node.js zlib.deflateRaw()用法及代碼示例
 - Node.js http.IncomingMessage message.rawHeaders用法及代碼示例
 - Node.js Console用法及代碼示例
 - Node.js GM transparent()用法及代碼示例
 - Node.js URL.protocol用法及代碼示例
 - Node.js http.Agent.reuseSocket(socket, request)用法及代碼示例
 - Node.js fs.filehandle.datasync()用法及代碼示例
 - Node.js socket.bind()用法及代碼示例
 - Node.js v8.getHeapSpaceStatistics()用法及代碼示例
 - Node.js http2session.destroyed用法及代碼示例
 - Node.js http.ServerResponse response.statusCode用法及代碼示例
 
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 Worker.disconnect()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
