2013-03-11 2 views
0

Я использую этот код в моем приложении чата с помощью Node.js и Redis, но без hiredis как я не могу установить его на окна машиныNode.js и Redis (hiredis) на окна

var app = require('express')() 
    , redis = require('redis') 
    , client = redis.createClient() 
    , server = require('http').createServer(app) 
    , io = require('socket.io').listen(server) 
    ; 

server.listen(80); 

io.sockets.on('connection', function (socket) { 
    console.log("client connected") 

    socket.on('join', function(userid) { 
     socket.set('userid', userid); 

     var userco = userid+":connects"; 

     client.incr(userco); 
    }); 

    socket.on('disconnect', function(userid) { 

     socket.get('userid', function(err, userid) { 

      var userco = userid+":connects"; 
      client.decr(userco); 
      var usercoco = client.get(userco); 
      console.log(usercoco); 
      if (parseInt(usercoco)<1) { 
       io.sockets.emit("remove-user",{id:userid}); 
      } 
     }); 
    }); 
}); 

но метод ParseInt не работая также с удаленным пользователем, не работает тоже. есть ли у вас какие-либо объяснения и решения?

+0

Можете ли вы определить, что «не работает»? Вы получаете ошибки? Если это так, вы должны включить их. –

+0

на console.log (usercoco), он дает мне истинное значение, и когда я использую redis-клиент, и я использую команду get 2: connect, он дает мне количество пользовательских соединений, например «1» или «2» –

ответ

0
var usercoco = client.get(userco); 
console.log(usercoco); 

.get является функцией ASYNC, она не возвращает переменную.

client.get(userco, function(err, res) { console.log(usercoco); } 

Он будет записываться на консоль при каждом его завершении.

+0

спасибо, который решил мою проблему, несмотря на то, что у меня были некоторые другие ошибки с socket.io –

Смежные вопросы