Skip to main content
Worker.prototype.disconnect - node__cluster.d.ts - Node documentation
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 } }); } ```

Return Type

void
A reference to `worker`.