2016-09-16 1 views
0

皆さん!初心者はここ!RangeError Node.JS

名前空間管理を可能にするためにオブジェクトにソケットコードを入れることにするまで、私はSocket.IOを使ってNode.JSアプリケーションを完成させました。私は今この方法の問題を抱えています(私は信じています)。

その目的は、すべてのクライアントに30秒ごとにIDを送信するように求めることです。残念ながら、コンソールは私にエラーを送信します。

"RangeError: Maximum call stack size exceeded at Function.isBuffer (buffer.js:225:23)"

私は私の誤りがあった場所はまだ見つかっていないと非常にあなたの助けをいただければ幸いです!

方法:

this.chckConnected = function(){ 
    this.connectedIds = []; 
    this.connected = 0; 
    io.of('/' + name).emit("askId"); 
    setTimeout(function(){ 
    io.of('/' + name).emit("nbCo", this.connected);}, 1000); 
    setTimeout(this.chckConnected, 30000); 
}; 
setTimeout(this.chckConnected, 1000); 

ソケットハンドラ:

 socket.on("sendId", function(sendId){ //Check if people are online 
     if(connectedIds.indexOf(sendId) == -1){ 
      connectedIds.push(sendId); 
      connected++; 
     } 
    }); 

答えて

0

あなたはタイムアウトがあります場合でも、chckConnected関数の無限ループを作成しています。

this.chckConnected = function(){ 
    this.connectedIds = []; 
    this.connected = 0; 
    io.of('/' + name).emit("askId"); 
    setTimeout(function(){ 
    io.of('/' + name).emit("nbCo", this.connected);}, 1000); 
    //setTimeout(this.chckConnected, 30000); // remove this line 
}; 
+0

大変ありがとうございました。私は愚かだと感じる! –

+0

解決済みですか? – Anouar

+0

はい、ありがとうございます。私はそれに印を付けるのを忘れました。 (私はnoobyです) –

関連する問題