小编Sơn*_*yễn的帖子

Redis Pub-Sub或Socket.IO的广播

我看到了这个片段:

在服务器上

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 });
  });
});
Run Code Online (Sandbox Code Playgroud)

在客户端

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

而我想知道为什么?Socket.IO有没有自己的广播机制?为什么选择Redis'Pub-Sub over Socket.IO?我们不能这样做:

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

如果有理由使用Redis,那么有什么好处呢?持久性?

real-time publish-subscribe redis socket.io

16
推荐指数
2
解决办法
6905
查看次数

标签 统计

publish-subscribe ×1

real-time ×1

redis ×1

socket.io ×1