我正在尝试创建一个 nodejs 服务器,在其中运行一个简单的 x/y 世界,客户端可以从中推送/拉取数据。如果我只想在客户端使用 box2d 或其他东西进行这样的世界模拟,我会使用 setTimeout 函数,该函数将调用一个步进函数。当我在 nodejs 中尝试时,这不起作用。服务器崩溃并出现错误“RangeError:超出最大调用堆栈大小”。
这是我的 server.js。world 参数是路由器可以操作的世界对象的一个实例。
var http = require("http");
function start(world, router, handlers) {
function onRequest(request, response) {
router(world, handlers, request, response);
}
http.createServer(onRequest).listen(8888);
console.log("ServerStarted. Listens to 8888.");
step_world(world,0);
}
function step_world(world,step) {
world.update();
step++;
console.log("updating world: " + step);
step_world(world,step);
//setTimeout(step_world(world,step),1000/30);
}
exports.start = start;
那么:如何使用 nodejs 运行模拟?