node.js - 管道 Redis 发布到套接字? Node .js

标签 node.js redis socket.io

我正在构建一个应用程序,服务器偶尔会在给定 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/

相关文章:

javascript - Node js 从 tcp 套接字 net.createServer 读取特定消息

php用redis实现一个队列

lua - Redis Lua 脚本相对于键空间通知是原子的?

node.js - socket.io - 为套接字获取多个字段?

javascript - 使用 Node.js 和 Socket.io 实时更新大型 HTML 内容

node.js - 将 ant-design 与 next.js 集成

node.js - 如何使用 Node js 结束机器人框架中的输入

node.js - P12证书 "Not enough data"错误

php - 如何在 laravel 中同时拥有集群和非集群 redis 连接

node.js - 在实时 Webbynode 服务器上仅看到 "Welcome to socket.io."