method Worker.prototype.disconnect
Usage in Deno
```typescript import { Worker } from "node:node__cluster.d.ts"; ```
Worker.prototype.disconnect(): void
In a worker, this function will close all servers, wait for the `'close'` event
on those servers, and then disconnect the IPC channel.
In the primary, an internal message is sent to the worker causing it to call `.disconnect()` on itself.
Causes `.exitedAfterDisconnect` to be set.
After a server is closed, it will no longer accept new connections,
but connections may be accepted by any other listening worker. Existing
connections will be allowed to close as usual. When no more connections exist,
see `server.close()`, the IPC channel to the worker will close allowing it
to die gracefully.
The above applies _only_ to server connections, client connections are not
automatically closed by workers, and disconnect does not wait for them to close
before exiting.
In a worker, `process.disconnect` exists, but it is not this function;
it is `disconnect()`.
Because long living server connections may block workers from disconnecting, it
may be useful to send a message, so application specific actions may be taken to
close them. It also may be useful to implement a timeout, killing a worker if
the `'disconnect'` event has not been emitted after some time.
```js
import net from 'node:net';
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 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
}
});
}
```
void
A reference to `worker`.