2016-05-21 22 views
2

當我快速刷新瀏覽器時,有時套接字對象不會從陣列中刪除,如果我離開它一分鐘,它會減少到5或6,但永遠不會返回到1連接。刪除套接字表單陣列工作不正確

var io = require('socket.io').listen(server); 
io.sockets.on('connection', function(socket){ 
    users.push(socket); 
    var my_index = users.indexOf(socket); 
    console.log("Im number " + (my_index+1) + " form " + users.length); 
    var timer = setInterval(function(){ 
     socket.emit('date', {'date': new Date()}); 
    }, 1000); 

    initSocketData(socket); 

    socket.on('client_data', function(data){ 
     for (var i = 0, len = users.length; i < len; i++) { 
      users[i].emit('a_in', {'a_in': data}); 
     } 
    }); 

    socket.on('disconnect', function(socket){ 
     clearInterval(timer) 
     if (my_index > -1) { 
      users.splice(my_index, 1); 
     } 
    }); 
}); 

和控制檯輸出

$ node socket.js 
Im number 1 form 1 
Im number 1 form 1 
Im number 1 form 1 
Im number 1 form 1 
Im number 2 form 2 
Im number 3 form 3 
Im number 4 form 4 
Im number 5 form 5 
Im number 6 form 6 
Im number 6 form 6 
Im number 7 form 7 
Im number 8 form 8 
Im number 9 form 9 
Im number 9 form 9 
Im number 10 form 10 
Im number 11 form 11 

回答

0

使用sync disconnect on unload標誌告訴客戶端做窗口關閉發送斷開總成。

io.connect('http://adress/', {'sync disconnect on unload':true}); 
+0

我把'var socket = io.connect'('http:// localhost:8001 /',{'unconnection on unload':true});'在html文件上,但它仍然發生 –