redis与nodejs + socketio和python,消息事件被触发两次?

时间:2014-08-20 15:58:10

标签: python events redis socket.io message

我已经使用redis-py设置了一个nodejs服务器以及简单的python脚本。

我的nodejs服务器上有这个:

var http = require('http');
var server=http.createServer(onRequest).listen(3000);
var io = require('socket.io')(server);
var redis = require('redis');
var fs= require('fs');
var sub = redis.createClient();
sub.subscribe('channel');


function onRequest(req,res){
    var index;
    fs.readFile('./index.html', function (err, data) {
    if (err) {
        throw err;
    }
        index = data;
        res.writeHead(200,{'Content-Type':'text/html'});
        res.write(index);
        res.end();
    });

};

var sockets=[];
io.on('connection', function(socket){
  console.log('a user connected');
  sockets.push(socket);
  console.log(sockets.length);
  sub.on('message', function(channel, message){
    console.log(message);
    sockets[0].emit('chat message',message);
    });

  io.emit('chat message', "enter nickname");
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

这只是一个简单的测试,我试图找出我的邮件多次发送的原因。

我认为对于我从python发送的每条消息,sub.on('message')被触发两次。为什么呢?

python代码非常简单:

import redis
r=redis.StrictRedis()
pubsub=r.pubsub()
r.publish('channel',"HHHHHHH")

0 个答案:

没有答案