Живые данные нужны там, где пользователь не должен нажимать F5: чат поддержки, уведомления о новых заявках, статус заказа, совместная работа нескольких операторов над одним списком. Сложность не в самом сокете, а в деталях: кто имеет право слушать этот канал, что происходит при обрыве связи, как не отправить сообщение всем подряд, когда оно адресовано одному.
Делаю сервис на NestJS с TypeScript от контроллера до клиента. Socket.IO или чистый WebSocket с авторизацией соединения, адресной и широковещательной доставкой событий. Модульная архитектура, DTO и валидация на входе. Состояние и очереди на Redis, чтобы переживать перезапуск и обрывы. REST и WebSocket живут рядом на одном контракте данных, поэтому фронтенд получает те же поля обоими путями.
Собран полноценный real-time чат с серверной частью: авторизация сокетов, адресная доставка, стабильное поведение при потере связи. Пользователь видит изменения сразу, а не после обновления страницы, и при этом никто не получает чужих событий.