@tshemsedinov написал коммент под видео. Дублирую тут:
Основная идея лекции: когда вы выключаете приложение оповестите об этом клиентов. Полностью с этим согласен.
Идеи которые я хотел бы добавить:
1) DevOps
1.1) Graceful Shutdown необходим при re-deploy приложения, чтобы не потерять часть данных во время аварийной остановки приложения.
1.2) В зависимости от инфраструктуры приложение получит один из unix сигналов: ['SIGTERM', 'SIGINT', 'SIGHUP'] в качестве команды остановись.
1.3) Если приложение не окончит свою работу в течение 1-1.4 секунды (зависит от инфраструктуры), то оно будет убито принудительно сигналом 'SIGKILL'
2) Node.js
2.1) process.exit(0) (или с любым другим аргументов) это аварийная, а не мягкая остановка
2.2) Graceful Shutdown в Node.js выполняется посредством закрытия всех соединений и остановки всех таймеров
2.3) Вместо закрытия порта, разрыва соединения или остановки таймера можно использования метод unref чтобы пометить объект второстепенным.
2.4) Если не происходит быстрое освобождение ресурсов, то хорошим тоном является самостоятельный вызывать аварийную остановку до того, как инфраструктура убьет процесс. Для этого подходит таймаут с process.exit(1) помеченный unref.
2.5) Последним шагом любой остановки является process.on('exit', (exitCode) => ...) используемый для логирования, что ваш процесс остановился и с каким кодом.
3) Misc
3.1) Для хранения соединений лучше использовать Set а не Map
3.2) pm2, а не самописный cluster является общепринитым методом кластеризации.
3.3) WebSocket или ServerSideEvents выглядели бы наглядней для демонстрации проблемы.