2016-04-17 10 views
0

私はこれをやめようとしているのか、それともノードに間違った方法で近づいているのかは分かりません。node.jsにエンジンループを作成するにはどうすればよいですか?

私はすべてのセッションがアクセスできるメモリ内のオブジェクト(この場合はコンポーネントツリーになります)を持っていたいと思います。また、ユーザーセッションとは別の何らかの種類の「ハートビート」をアップデートしたいと思っています。

+0

これを行うべきではありません。セッションデータと共有メモリをスケーラビリティを考慮して決してメモリに置くべきではありません。メモリセッションはあなたのhablityをスケールに制限し、信頼できるものではなく、Redisのようなものを試してみてください。どのようにあなたはこれを行う必要があると感じる場合。グローバルオブジェクトに追加したり、オブジェクトをエクスポートしてメモリにアクセスする必要がある場所を必要とするモジュールを持つだけです。 –

+0

とは何ですか?あなたはこれを達成する方法を尋ねていますか?オブジェクトの永続ストレージが必要であり、それはメモリヒープではありません。データベースレプリケーションやメモリキャッシング(Redis)を使用した分散システムは、一歩進んだ方法です。このようにして、データは必要に応じて取得/作成/更新されます。 – Yerken

+0

ゲームループと同様のループを実装するにはどうすればよいですか?フレームを処理する代わりに、ツリーのコンポーネントを更新しています。 – chrisp

答えて

0

すべてのセッションで使用可能なオブジェクトを作成するには、node.jsプロセスの外部にすでに説明したコメントが必要です。自然な選択はredisです。なぜなら、JavaScriptは高速で「話す」ためです。これは、プロセス間でデータを共有するための最良の方法です。

「ハートビート」のような間隔でストレージ内のデータのローカルコピーを更新するには、setIntervalを使用できます。

+0

ちょうどこの "問題"についてもっと読んだことがありますが、setItermediateよりsetIntervalを提案するのはなぜですか?どちらかの利点が何か不思議です。 – chrisp

+0

'setImmediate'は、イベントループの終了後に一度だけ実行されます。しかし、私はあなたの質問を正しく理解していれば、何度も繰り返し実行したかったのです。 – migg

+0

ええ、私はWindowsのメッセージループ、または典型的なゲームループのいずれかをエミュレートしようとしていました。もしsetIntervalがそこに私を連れて来たら、素晴らしい。 – chrisp

関連する問題