BACK
Use casesWebSocket basic — входящие и исходящие сообщения
Use cases · 44

WebSocket basic — входящие и исходящие сообщения

Паттерн

WebSocket — двунаправленный канал. Subscribe — это «слушать сервер». Next в socket — это «отправить серверу». Не путать с HTTP, где запрос/ответ строго один к одному.

Какую проблему решаем

Callback API socket.on('message', ...) и socket.send(...) разрастается по обработчикам компонента, плохо очищается при destroy, и легко получить «зомби-listener» после ухода со страницы.

Операторы и зачем они нужны

  • Subject симулирует duplex-канал: subscribe для входящих, next для исходящих.
  • В реальности используйте webSocket из rxjs/webSocket — даёт ровно такую же модель с socket.next(command).

Подводные камни

  • HTTP complete сам, WebSocket — нет. Может жить часами и требует явного teardown и reconnect.
  • Не создавайте новый socket на каждый subscribe в компоненте. Один socket в singleton service, компоненты подписываются на derived streams.
  • Ошибки socket нельзя глотать. Нужен либо reconnect, либо явный offline-state в UI.

Что в итоге получаем

Incoming и outgoing стороны канала явно разделены. Легко тестировать каждую отдельно.

script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...