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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。