Каков наилучший шаблон для большого многокомпонентного приложения ReactJS для интеграции с внутренним сервером socket io?
Вот некоторые требования
- Приложение React должно подключаться к бэкэнду (серверу, использующему реализацию socket.io на основе Flask) при входе в систему. Соединение должно быть разорвано при выходе из системы
- Соединение должно управляться из центрального места (так как я не хочу, чтобы каждый компонент подключался / отключался к socket-io). Это также должно быть местом для управления жизненным циклом соединения socketio (отсоединение, переподключение и т. Д. c).
- Серверная часть будет отправлять асинхронные c обновления (или статистику для различных компонентов). Эти статистические данные должны обрабатываться общим экземпляром обработки socketio и помещаться в хранилище redux . В теле сообщения будет достаточно информации, чтобы демультиплексировать сообщения.
- Сами компоненты должны (предпочтительно) не знать о socket-io, они работают в состоянии избыточности.
- Компоненты могут отправлять действия, которые потенциально могут привести к отправке сообщения socketio ( в конец).
- [У меня нет варианта использования, когда клиенту нужно поговорить с другим клиентом.]
Несколько вопросов:
- Как правильно спроектировать это? В какой момент я должен подключиться к socket-io?
- У меня есть компонент basi c -layout, который используется всеми страницами. Это правильное место, чтобы подключить сокет-вызов? Тем не менее, я вижу, что этот компонент выгружается / загружается для каждой страницы. Почему-то это не похоже на правильное место
- Я видел несколько примеров, когда каждая страница открывает соединение socketio. Я не уверен, что это правильная модель?