请问如何解决这个问题?
我的问题与插座有关,您必须具备一些知识才能回答。
我正在尝试将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
运用于其他功能吗?
答案 0 :(得分:0)
在console.log
上设置字段之前,似乎token_user
正在执行。当事件发生时,将执行传递给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);
});