ReactJS, SocketIO & Redux - Какой дизайн правильный? - PullRequest
2 голосов
/ 14 февраля 2020

Каков наилучший шаблон для большого многокомпонентного приложения ReactJS для интеграции с внутренним сервером socket io?

Вот некоторые требования

  1. Приложение React должно подключаться к бэкэнду (серверу, использующему реализацию socket.io на основе Flask) при входе в систему. Соединение должно быть разорвано при выходе из системы
  2. Соединение должно управляться из центрального места (так как я не хочу, чтобы каждый компонент подключался / отключался к socket-io). Это также должно быть местом для управления жизненным циклом соединения socketio (отсоединение, переподключение и т. Д. c).
  3. Серверная часть будет отправлять асинхронные c обновления (или статистику для различных компонентов). Эти статистические данные должны обрабатываться общим экземпляром обработки socketio и помещаться в хранилище redux . В теле сообщения будет достаточно информации, чтобы демультиплексировать сообщения.
  4. Сами компоненты должны (предпочтительно) не знать о socket-io, они работают в состоянии избыточности.
  5. Компоненты могут отправлять действия, которые потенциально могут привести к отправке сообщения socketio ( в конец).
  6. [У меня нет варианта использования, когда клиенту нужно поговорить с другим клиентом.]

Несколько вопросов:

  1. Как правильно спроектировать это? В какой момент я должен подключиться к socket-io?
  2. У меня есть компонент basi c -layout, который используется всеми страницами. Это правильное место, чтобы подключить сокет-вызов? Тем не менее, я вижу, что этот компонент выгружается / загружается для каждой страницы. Почему-то это не похоже на правильное место
  3. Я видел несколько примеров, когда каждая страница открывает соединение socketio. Я не уверен, что это правильная модель?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...