0
setInterval
機能が実行されないようにするには、setInterval
機能が停止する方法を見つけようとしています。のリソース。 ソケットを介して接続されているユーザーの数が少なくとも1つである場合、ユーザー定義関数を実行する - Nodejs
io.engine.clientsCount //this will tell number of users connected but only inside socket.on function.
は私のコードです:どうすればよいのsetIntervalの最良の停止実行の場合(テスト、5000)無
var connectCounter = 0;
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
function test()
{
httpk.get("api-url", function(res) {
var body = '';
res.on('data', function(data){
body += data;
});
res.on('end', function() {
var parsed = JSON.parse(body);
console.log(parsed.johndoe.example1);
nsp.emit('live-quote', parseFloat(parsed.johndoe.example1);
});
});
}
setInterval(test,5000);
nsp.on('connection', function(socket){
//Make a http call
connectCounter++;
nsp.emit('live-users',connectCounter);
console.log('1 user connected, Total Joined: '+connectCounter);
socket.on('disconnect', function(){
connectCounter--;
nsp.emit('live-users',connectCounter);
console.log('1 user disconnected, Total Left: '+connectCounter);
});
console.log("total clients: "+io.engine.clientsCount);
if(io.engine.clientsCount >= 1)
{
//do something
//if I put setInterval here it will cause problems, that is for each connection it will run setInterval causing lot of http get request
// meaning, if 100 users then 100 get request in 5 seconds (depending on setInterval time).
}
});
ユーザーは接続しましたか?
そのありませんちょうどclearIntervalを使用しています。私はclearInterval JSの機能を認識しています。しかしここで問題はソケットに関してです。関数testとsetIntervalはnsp.on()ソケット接続の範囲外であり、接続されているユーザの総数はnsp.on()関数内でしか見つかりませんが、socket.on接続内でsetIntervalを持つことはできません。接続されたクライアントごとにsetIntervalが実行されるためです。 –
私の答えを更新しました:) – RaphaMex
いいえ。私は数時間でそれを試してみましょう。 –