Введение в веб-сокеты в Nest
Страница обновляется только после перезагрузки: новая строка на сервере не доходит до открытых вкладок сразу. HTTP отвечает один раз на запрос, и клиент снова должен спросить данные, чтобы увидеть изменения.
Веб-сокет держит канал открытым:
сервер может сам отправить свежие
данные, когда они появились в памяти
приложения. В Nest для этого используют
пакеты @nestjs/websockets
и @nestjs/platform-socket.io
поверх Socket.IO в процессе NodeJS.
Класс с пометкой шлюза принимает соединения и реагирует на сигналы от клиентов так же, как контроллер на адреса, только без отдельного запроса на каждое сообщение. Шлюз регистрируют среди провайдеров модуля, к нему можно внедрять сервисы с массивом в памяти, без базы данных.
Дальше разберём пустой шлюз с установкой пакетов, приём тела сообщения, ответ только отправителю, рассылку всем подключённым, комнаты для части клиентов, а также реакцию на новое соединение и на разрыв канала.