【发布时间】:2015-06-16 20:26:32
【问题描述】:
我的以下 node.js 代码运行良好,但我似乎无法让 console.log 执行 - 可能是什么原因? redis 在范围内,redis.get() 在较早的位置工作正常(所以我知道语法很好).. 不执行的 console.log 用“# cannot execute this line”行注释代码。将不胜感激任何关于如何调试的指针..
程序打印出“pong”和“pong2”,所以我知道它正在响应 ping。
var WebSocketServer = require('ws').Server
var wss = new WebSocketServer({
port: 8080
});
var redis = redis_server.createClient(6379, 'localhost');
wss.on('connection', function(ws) {
ws_auth(redis, ws, function(authresult, uid) {
if (!authresult) {
ws.close();
return;
}
ws.on('ping', function() {
console.log('pong')
var cookie = ws.upgradeReq.headers.cookie;
cookie_json = JSON.parse(cookie);
redis.get('session:' + cookie_json.sessionid, function(err, value) {
console.log(getDateTime() + ': value ' + value + " session exits");#cannot execute this line
});
ws.pong();
console.log('pong2')
});
});
});
【问题讨论】:
-
是否有客户端向您的服务器发送
ping消息以触发第一个console.log()语句?您可能想阅读以下内容:stackoverflow.com/a/10586583/816620. -
@jfriend00 谢谢 - 程序打印出“pong”,所以我知道它正在响应 ping。
-
那么也许你应该在你的问题中澄清你问的是
console.log()。 -
@jfriend00 我做了 - 代码说“# cannot execute this line” - 但我会将它添加到问题正文而不是代码中。
-
什么是
ws_auth()?它正在传递redis句柄,因此它可能正在对它做一些事情,导致redis.get()以某种方式失败。