2016-05-21 2 views
2

ブラウザをすばやくリフレッシュすると、ソケットオブジェクトが配列から削除されず、1分放置すると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 /'、{'unload on unload':true})を' htmlファイルに入れます。 –

関連する問題