带有nodejs和x2B的redis;socketio和python,消息事件触发两次?

带有nodejs和x2B的redis;socketio和python,消息事件触发两次?,python,events,redis,socket.io,message,Python,Events,Redis,Socket.io,Message,我已经使用RedisPy设置了一个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.create

我已经使用RedisPy设置了一个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');
  });
});
这只是一个简单的测试,我试图找出为什么我的消息会被发送多次

我已经计算出,
sub.on('message')
会为我从python发送的每条消息触发两次。为什么?

python代码非常简单:

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