Есть ли способ сделать обратный вызов от подписчика к издателю после обработки сообщения? - PullRequest
0 голосов
/ 27 февраля 2020

Я создал NodeJS приложение с socket.io, использующее redis для связи между моими серверами.

Когда 3 сервера работают, все подключены к redis:

Пользователь подключается к серверу 1 и создает игру, которая теперь запускается сервером 1.

Второй пользователь подключается к серверу 2 и хочет присоединиться к игре, работающей на сервере 1. Сервер 2 считает, что игра не запускается самостоятельно, поэтому он публикуется sh a 'gameevent', чтобы увидеть, содержит ли игру какой-либо из других серверов:

serverSocketHandler.redisPub.publish('gameevent', JSON.stringify({clientSocketId: socketId, gameId: gameId, username: username, action: action, value: value}), (err) => {
      if (err) {
         console.log('err after publishing', err);
      }
 });

Теперь, как мне узнать, если какой-либо из других серверов (подписчиков) действительно обнаружил игру, содержащую указанный 'gameId? «? См. Комментарий во фрагменте кода ниже:

serverSocketHandler.redisSub.subscribe('gameevent');
        serverSocketHandler.redisSub.on('message', (channel, message) => {
            message = JSON.parse(message);
            if (message.action === 'JOIN_GAME') {
                // Look for game and if found, join game and report back to publisher
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...