Изменения одного пользователя могут отражаться на других пользователях одновременно с использованием nodejs - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть приложение react js, node js и mongoDB.У меня есть коллекция в mongoDB.

Senario: Допустим, есть 3 пользователя ( A, B, C ), которые одновременно входят в систему.Все они получают доступ к одной коллекции в одно и то же время .Пусть C что-то изменил в коллекции из UI.

  1. Так как A и B могут получить доступ к тем изменениям, которые C делает в пользовательском интерфейсе одновременно?
  2. И в этом сенарио какой подход должен быть лучшим?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Самое простое решение - использовать webSocket (вы можете попробовать socketIo).Таким образом, вы говорите всем своим пользователям в вашем приложении «прослушать» некоторые изменения.В качестве примера в списке задач, пользователь C добавит элемент todo, сервер будет уведомлен об этом добавлении и отправит через веб-сокет всем пользователям, слушающим это конкретное событие. socket.io .Надеюсь, мой ответ будет полезным.

Существует несколько способов использования Socket.io.Вы можете отправлять сообщения от клиента к серверу, а сервер отправляет сообщения другим клиентам.Пример:

client Side (user adding a ToDo): socket.emit('message', YourTODOVariable);
Server Side: socket.on('message',function(YourTODOVariable){
//do other stuff here;
socket.broadcast.to('ToDo', YourTODOVariable)
})
Client Side (other Users): socket.on('ToDo', function(YourTODOVariable){
ToDo.push(YourTODOVariable) //-> like this everybody got the new variable.
})

Я предполагаю, что это довольно простой пример, но я думаю, что вы можете понять с этим.

Другое решение, которое я предпочитаю лично, - это корреляция с событием узла.Например, новый запрос Http вызовет событие узла и вызовет socket.emit для всех других прослушивающих клиентов.

Этот пост также может помочь вам.Удачного кодирования :)

0 голосов
/ 25 апреля 2018

Таким образом, существует несколько решений для вашего сценария, например:

  1. Socket.IO: в этом решении вам придется управлять всеми клиентами-сокетами, и как только сервер отправит сообщение, все зарегистрированные клиенты будут уведомлены.

  2. Реагируйте на Redux: проверяйте свою базу данных каждые x миллисекунд и обновляйте состояние хранилища в вашем приложении, так что все зарегистрированные компоненты в состояние будут обновляться после того, как изменение станет безумным. (это более плоское решение, чем вариант 1., но немного некрасиво)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...