首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用节点群集(Node群集,Socket.io )时,Redis多次订阅

使用节点群集(Node群集,Socket.io )时,Redis多次订阅
EN

Stack Overflow用户
提问于 2014-04-22 12:46:15
回答 1查看 1.6K关注 0票数 2

我正在使用socket.io实时发布文章,

流正在实时更新,但问题是,redis订阅多次发生,而post在流中多次出现。

我正在使用node.js cluster module创建多个节点集群。这是密码,

worker.js

代码语言:javascript
复制
var cluster    = require('cluster');
var server     = new Hapi.Server(config.port,view_options);

var socketIO   = require('socket.io');
var redis      = require("socket.io/node_modules/redis");
var RedisStore = require('socket.io/lib/stores/redis');

var io         = socketIO.listen(server.listener);
var sub        = redis.createClient();
sub.setMaxListeners(0);

io.configure(function() {
    io.set('store', new RedisStore({
        redisSub : sub
    }));
    io.set('transports', ['xhr-polling']);
    io.set('polling duration', '10');
});

if (cluster.isMaster) {
     for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
    }
} 
else {
    sub.subscribe("userstreams");
    io.sockets.on('connection', function(socket) {
    // Realtime streams : subscribe to redis channel userstreams
        sub.on("message", function(channel, member_postid) {
            console.info("-----------realtime post receieved --------",member_postid);                
        });        
    });
}

publisher.js

代码语言:javascript
复制
// head
var redis      = require("socket.io/node_modules/redis");
var pub        = redis.createClient();
// inside a function 
pst = member + "::" + data.pid
pub.publish("userstreams", pst);

客户机只发布一次postID,但我在服务器的userstreams通道中获得了多个订阅。

我希望我的服务器只获得一次redis订阅,这样我就可以将它们在套接字中发送到用户的流中一次。

EN

回答 1

Stack Overflow用户

发布于 2014-04-26 10:23:06

您需要为socket.io配置pub、sub和client:

代码语言:javascript
复制
var pub = redis.createClient();
var sub = redis.createClient();
var client = redis.createClient();

并将它们传递给socket.io

代码语言:javascript
复制
io.set('store', new io.RedisStore({
  redisSub : sub,
  redisPub: pub,
  redisClient: client
}));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23220034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档