当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js Worker.disconnect()用法及代码示例


worker.disconnect()

历史
版本变化
v7.3.0

此方法现在返回对 worker 的引用。

v0.7.7

添加于:v0.7.7


参数

在worker中,该函数将关闭所有服务器,等待这些服务器上的'close'事件,然后断开IPC通道。

在主节点中,一条内部消息被发送到工作线程,导致它自己调用.disconnect()

导致设置.exitedAfterDisconnect

服务器关闭后,它将不再接受新的连接,但任何其他侦听工作人员都可以接受连接。现有的连接将被允许照常关闭。当不再存在连接时,请参阅 server.close() ,通往工作人员的 IPC 通道将关闭,允许其正常终止。

以上仅适用于服务端连接,客户端连接不会被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
    }
  });
}

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 Worker.disconnect()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。