【问题标题】:node.js and redis (hiredis) on windowsWindows 上的 node.js 和 redis (hiredis)
【发布时间】:2013-03-11 23:43:09
【问题描述】:

我正在使用 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 事件也不起作用.. 你对此有什么解释和解决方案吗?

【问题讨论】:

  • 你能进一步定义“不工作”吗?你有错误吗?如果是这样,您应该包括它们。
  • 在 console.log(usercoco) 上它给了我真正的价值,当我使用 redis 客户端并使用命令 get 2:connects 它给了我用户连接数,例如“1”或“2”

标签: node.js node-redis


【解决方案1】:
var usercoco = client.get(userco);
console.log(usercoco);

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

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

它会在完成时记录到控制台。

【讨论】:

  • 谢谢,尽管我在 socket.io 上遇到了一些其他错误,但它解决了我的问题
猜你喜欢
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多