簡體   English   中英

socket.io unqiue變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM