我正在构建一个应用程序,服务器偶尔会在给定 channel 上发布数据:
redisClient.publish('global-channel', data);
客户端需要能够连接到服务器并收听全局广播。这种方法有什么问题吗?具体来说,为每个socket连接创建一个redisClient?
io.sockets.on('connection', function(socket){
var socketRedis = redis.createClient();
socketRedis.subscribe('global-channel');
socketRedis.on('message', function(ch, msg){
socket.emit('event', msg);
});
});
我是 Node、Redis 和 socket.io 的新手...仍在学习哪个部分应该处理某些任务以及在哪里(服务器端与客户端)——谢谢!
最佳答案
是的,有更好的方法:
var socketRedis = redis.createClient();
// Subscribe to the channel only one time
socketRedis.subscribe('global-channel');
// Accept any connection you want from socket.io
io.sockets.on('connection', function(socket){
// Do what you want here
});
// Add only one listener to the channel and broadcast
// the message to everyone connect on socket.io
socketRedis.on('message', function(ch, msg){
io.sockets.emit('event', msg);
});
关于node.js - 管道 Redis 发布到套接字? Node .js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482074/