RangeError Node.JS

时间:2016-09-16 14:27:19

标签: node.js error-handling

大家好!初学者在这里!

我已经使用Socket.IO创建了一个小的Node.JS应用程序,该应用程序运行良好,直到我决定将我的套接字代码放在一个对象中以允许名称空间管理。我现在遇到这种方法的问题(我相信。)

其目的是要求所有客户每隔30秒发送一次ID。不幸的是,控制台发给我一个错误:

  

" RangeError:超出最大调用堆栈大小       在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++;
        }
    });

1 个答案:

答案 0 :(得分: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
};