大家好!初学者在这里!
我已经使用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++;
}
});
答案 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
};