2

node.js と socket.io を使用してターンベースのマルチプレイヤー ゲームをほぼ完成させました。

私は、Webサーバーとしてexpress.jsを持ち、socket.ioを使用してゲームサーバーとして機能する別のクラスを持っています。

私の問題は、これら 2 つが同じアプリケーションで実行されていることです。ユーザーがログインしてプレーヤーの詳細を確認し、ロビーでチャットできる Web ランディング ページがあります。ここまでは、ゲーム ロジックに関連するものは何もありません。だから私は、なぜこのゲームサーバーがウェブサーバーと同じアプリで実行されているのか自問しています。また、将来的には異なるサーバー (ヨーロッパ サーバー、アメリカ サーバー、アジア サーバーなど) が存在する可能性がありますが、ランディング ページとログイン メカニズムは同じままです。

では、これを達成するための完璧な方法は何ですか?

1 つの Web サーバーと 1 つのゲーム サーバーの 2 つの個別の node.js アプリを作成する必要があります。ただし、その場合、ソケットとリクエスト間でセッション データを共有できますか?

もう 1 つの欠点は、サイトをナビゲートするときに予期しない動作が発生すると、Web サーバーが例外をスローしてアプリケーションを閉じ、ゲーム サーバーもシャットダウンする可能性があることです。

4

1 に答える 1

1

ゲームサーバーへのアクセスを許可する前に、ユーザーがWebサーバーで認証されているかどうかを確認するために、node.jsアプリとRedisなどの共通のセッションストアを完全に分離している場合があります。共通セッションストアは、1つのWeb + 1つのゲームサーバーだけでなく、同時ゲームサーバーにも役立ちます。

すべてのエラーをキャッチすることでアプリケーションを閉じるのを防ぐこともできますが、これは一般的にはお勧めできません。

後で編集:セッションストアに関する長所と短所の小さなリストを次に示します。node.js用ではありませんが、ここに適用されます:http: //techwhizbang.com/2009/12/memcache-session-store/

于 2012-12-18T13:03:16.290 に答える