2016-11-09 9 views
0

私はExpressJS + socket.io + Nodeバックエンドによって補完されるanglejsベースのwebappを持っています。ほとんどのデータトラフィックは、一部のリアルタイムグラフを除き、REST Webサービスに基づいています。 socket.on( 'connection')が確立されると、setIntervalを使用してデータがプッシュされます。ここにコードがあります。角度、socket.ioおよびsetInterval - ビューの変更を管理する方法

socket.on('connection', function(
    socket.on('handshake', function(socket) { 
     console.log("handshake data recieved", socket.id); 
     // restart(); 
     dashboardInterval = setInterval(function(){sendDashboardStats(socket, 'some');}, 5000); 
    }); 
}); 

これは、UI /クライアントが接続を閉じた場合でも実行され続けます。さらに悪いことに、特定の時点で多くのユーザー/クライアントが存在する可能性があります。したがって、これらの間隔のみをどのように閉じますか?

答えて

0

ちょうどclearInterval(dashboardInterval);を追加してソケットが切断された場合でも、間隔をキャンセルすることができます。

var dashboardInterval; 

socket.on('connection', function(
    socket.on('handshake', function(socket) { 
    console.log("handshake data recieved", socket.id); 
    // restart(); 
    dashboardInterval = setInterval(function() { 
     sendDashboardStats(socket, 'some'); 
    }, 5000); 
    }); 

    socket.on('disconnect', function() { 

    if (dashboardInterval) { 
     cancelInterval(dashboardInterval); 
    } 

    io.sockets.emit('user disconnected'); 
    }); 
}); 
関連する問題