Использую node.js, socket.io и redis.
Есть скрипт на php, который в зависимости от события кидает сообщение в канал Redis (pub/sub). Далее в свою очередь есть node.js, которые так-же подписан на каналы редиса и параллельно работает с сокетами.
Задача такая, например создается пост на сайте, сообщение летит в редис, node.js принимает сообщение и всем сокетам в определенной комнате необходимо на клиент послать данные. Так как язык все-же асинхронный, возникла проблема: Как это правильно сделать?
Если сделать как-то так, сообщение летит всех сокетом, примерно столько раз, сколько всего подключенных сокетов.
io.on('connection', function (socket) {
...
redisClient.on("message", function (channel, message) {
message = JSON.parse(message);
console.log('---- redis');
console.log(message);
io.to(room).emit('test', {
channel: channel,
message: message
});
});
Как правильно послать одно сообщение (получаем через редис, пуляем на соккеты) ?