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