クライアントがデータをプッシュ/プルできる単純なx/yワールドを実行しているnodejsサーバーを作成しようとしています。このような世界シミュレーションをクライアント側で 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でシミュレーションを実行するにはどうすればよいですか?