每个发布/订阅订阅的单个客户端?

时间:2017-09-23 08:41:11

标签: redis

相同客户端的同一频道上有多个听众是否有意义?这是反模式吗?或者我应该为每个子/套接字打开新客户端?连接限制让我感到紧张..

高级概述:

Redis Pub / Sub的消息通过WS连接发送给所有订阅的客户端。

Redis Pub/Sub -> NodeJS(WebSockets) -> Client

最小例子:

请注意我在WS连接函数之外只启动一次subsciption客户端。

const sub = startRedisForSubscriptions();
const pub = startRedisForOtherCommands();

// new user connects - perfect place to add all behaviour
websocketServer.on('connection', (socket, request) => {
  // subscribe to Redis channels
  sub.subscribe('chat', 'etc');

  // handle messages from subscribed channels
  sub.on('message', (channel, message) => {
    // send to client via WS
    socket.send(JSON.stringify({channel, message}));
  });

  // handle messages from WS client
  socket.on('message', message => {
    const msg = JSON.parse(message);
    pub.publish('chat', {from: ms.from, message: msg.message});
  });
});

0 个答案:

没有答案