2013-03-11 4 views
0

J'utilise ce code sur mon application de chat en utilisant Node.js et Redis mais sans hiredis que je ne peux pas l'installer sur la machine windowsNode.js et Redis (hiredis) sur les fenêtres

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}); 
      } 
     }); 
    }); 
}); 

mais la méthode parseInt pas travailler aussi l'événement remove-user ne fonctionne pas trop .. avez-vous des explications et une solution pour cela?

+0

Pouvez-vous définir plus précisément «ne fonctionne pas»? Avez-vous des erreurs? Si oui, vous devriez les inclure. –

+0

sur console.log (usercoco) il me donne une vraie valeur et quand j'utilise le client redis et j'utilise la commande get 2: connecte il me donne le nombre de connexions utilisateur par exemple "1" ou "2" –

Répondre

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

.get est une fonction ASYNC, elle ne renvoie pas de variable.

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

Il se connectera à la console à chaque fois qu'il sera terminé.

+0

merci ,, cela a résolu mon problème malgré d'autres bugs avec socket.io –

Questions connexes