0

我在使用 node.js 和 redis 但没有hiredis的聊天应用程序上使用该代码,因为我无法在Windows机器上安装它

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 方法也不起作用,remove-user 事件也不起作用..您对此有任何解释和解决方案吗?

4

1 回答 1

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

.get是一个 ASYNC 函数,它不返回变量。

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

它将在完成时登录到控制台。

于 2013-03-12T09:08:22.640 回答