Как организовать работу с WebSocket?
======================================

 Добрый день, нужно из разных компонентов на разных уровнях подписаться на WebSocket.  

  

Где мне стоит выполнить подключение?  

  

У меня 2 варианта:  

1. Использовать контекст, передавая подключение  

2. Подключение в отдельном файле, а в useEffect компонента подписываться на обновления.  

  

Но найти хороших примеров, где не тяп ляп "щас вот в useEffect все по быстрому настроим", я не нашел.  

Не понятно как и где стоит делать обработку ошибок, обрыв соединения и тп.  

  

Подскажите пожалуйста, может быть у кого-то есть какие-то наработки, либо видел github проекты качественные, а не обрубок "работает и ладно, сойдет".  

  

Как обычно организовывают работу с ws, где хранят подключения, как передают компонентам, как обрабатывают отключение ? 

 Зависит от размера проекта и дальнейшей поддержки. Если раз-два-плюнуть, то хоть через `window.ws = new WebSocket()`. Если уже нужно что-то более лаконичное, то я бы постарался максимально изолировать подключение к сокету от компонентов. Сделал бы так, чтобы какой-нибудь контекст прокидывал лишь бизнес-методы компонентам. А саму работу с сокетом делал под капотом, скрывая это от компонентов.