请告诉我如何解决这个问题?
我的问题是关于套接字的,你必须对它有一些了解才能回答。
我试图将socket.id
保存在函数外部声明的变量上,但没有成功……使用了偶数组,但也是一样的。
下面是我的代码:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http)
app.use('/', express.static('www'));
http.listen(3000, function(){
console.log('listening on *:3000');
});
var token_user = {};
io.on('connection', function(socket){
token_user["something"] = socket.handshake['query']['something'];
token_user["socket_id"] = socket.id;
});
console.log(token_user["socket_id"]); // Undefined
我收到了一条消息:UNDEFINED
。
为了在其他函数中使用socket.id
,有任何解决方案或其他方法可以让它离开那里吗?
发布于 2018-07-17 04:35:28
它看起来像是在token_user
上设置字段之前执行console.log
。当该事件发生时,将执行传递给io.on
的方法。同步执行io.on
之后的行。
尝试将console.log
移动到传递给io.on()
的函数中
function anotherMethod(user) {
console.log(token_user["socket_id"]); // will be "x"
}
var token_user = {};
io.on('connection', function(socket){
token_user["socket_id"] = "x"
anotherMethod(token_user);
});
https://stackoverflow.com/questions/51369690
复制相似问题