[英]socket.io unqiue variable
io.sockets.on('connection', function (socket) {
socket.on('something', function(data){
var VAR1 = true;
if(VAR1 === true){
VAR1 = false;
}
});
});
變量“ VAR1”是否對觸發套接字事件“某物”的每個用戶都是唯一的? 假設有1000個用戶,與套接字事件的變量的每個連接都將以VAR1為true開頭,其他用戶可以更改嗎? 每個連接都唯一嗎?
您的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;
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.