io.sockets.on('connection', function (socket) {
socket.on('something', function(data){
var VAR1 = true;
if(VAR1 === true){
VAR1 = false;
}
});
});
变量" VAR1"对于触发套接字事件的每个用户都是唯一的"某些东西"?让我们说有300个用户将每个连接到套接字事件的变量以VAR1为真开始,其他人可以改变吗?它对每个连接都是独一无二的吗?
答案 0 :(得分:0)
您的VAR1
对于发生的每个.on('something')
事件都是唯一的,并且一旦事件处理程序结束就会丢失。它是该事件处理程序中的局部变量,因此每次调用事件处理程序时都会创建一个新的VAR1
,并且一旦事件处理程序完成运行,它就会被Javascript垃圾收集。下次触发事件处理程序时,将创建一个新的VAR1
,然后进行垃圾回收。
现在,如果您希望它对每个单独的连接都是唯一的,并且在该连接的持续时间内持续,那么您可以将它声明为稍微不同的更高范围,如下所示:
io.sockets.on('connection', function (socket) {
var VAR1 = true;
socket.on('something', function(data){
if(VAR1 === true){
VAR1 = false;
}
});
});
现在,将为每个连接的套接字创建一个新的VAR1
,该变量将在该连接的持续时间内持续(因为它在闭包中)和每个.on('something', ...)
事件发生的情况将能够为每个单独的套接字访问唯一的VAR1
。
仅供参考,如果你想要一个套接字的唯一变量,你也可以只添加一个属性到套接字对象iself:
io.sockets.on('connection', function (socket) {
socket.VAR1 = true;
socket.on('something', function(data){
if(socket.VAR1 === true){
socket.VAR1 = false;
}
});
});