Redis Pub-Sub или Socket.IO's широковещательная рассылка

Я видел этот фрагмент:

На сервере

io.sockets.on('connection', function(socket) {
  const subscribe = redis.createClient();
  const publish = redis.createClient();

  socket.on('publish', function(channel, data) {
    publish.publish(channel, data);
  });

  socket.on('psubscribe', function(channel) {
    subscribe.psubscribe(channel);
  });

  subscribe.on("pmessage", function(pattern, channel, message) {
    socket.emit('message', { channel: channel, data: message });
  });
});

На клиенте

$(".action").click(function() {
  socket.emit('publish', 'game.#{gameid}.action.' + $(this).data('action'),
  JSON.stringify({ nick: "#{nick}", ts: Date.now() })
);

И мне интересно, почему? Разве у Socket.IO нет собственного механизма вещания? Почему стоит выбрать Redis' Pub-Sub, а не Socket.IO? Разве мы не можем просто сделать вот так:

io.sockets.on('connection', function(socket) {
  socket.on('action', function(channel, data) {
    socket.broadcast.to(channel).emit(data)
  });
});

И если есть причина использовать Redis, в чем будет польза? Упорство?

16
задан Sơn Trần-Nguyễn 15 April 2012 в 23:49
поделиться