Я создал 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
}
});