私はsocket.ioライブラリに基づいて私のマルチプレイヤーゲームを持っています。私はnode.jsにマルチスレッドを扱うためのクラスタモジュールがあることを学びました。 私のゲームの世界は複数のゾーンで構成されており、それぞれのゾーンを独自の処理で処理する必要があります。特定のワーカーにユーザーのソケットを渡す方法が必要なので、ユーザーはゾーン間を移動できます。 node.jsドキュメントでは、クラスタモジュールがすべての接続に対してワーカーを選ぶためにラウンドロビン方式を使用していることを確認しました。多分、接続を操作するための回避策がありますか?Node.jsクラスタは特定のワーカーに接続を渡します
0
A
答えて
1
クラスタリングがあなたにとって最適なソリューションであるとは必ずしも言えません。クラスタリングの主な利点は、異なるプロセス間で着信接続の自動バランシングが行われることです。ただし、その機能を使用する必要はありません。特定のゾーンを処理しているプロセスに各接続を手動で割り当てる必要があります。
このように、必要なプロセスの数を開始し、そのゾーンに固有の各ポートを割り当ててから、クライアントがAjaxリクエストをマスターに送信してどのポート彼らは彼らのゾーンのためのsocket.io接続を行う必要があります。クライアントはそのajaxレスポンスを取得してから、そのゾーンの適切なサーバーに直接接続します。すべてのsocket.ioサーバーは、目的のマスターページのドメイン/ポートからのクロスオリジン要求を許可する必要があります。
ゾーンのサーバーへの接続は、上記のようにポート経由で行うことも、zone1.mygameserver.com
などの別のホスト名で行うこともできます。そして、nginxのようなものを使用して、ボックス。
関連する問題
- 1. Node.JS特定の接続IDにパケットを送信するSocket.IO
- 2. GCE redisを使用してクリックして展開node.jsをノードのクラスタに接続
- 3. Node.jsのシリアルポートを持つ特定のデバイスへの自動接続
- 4. ノードJSクラスタの特定のワーカーを強制終了できません
- 5. DjangoテストDBに接続するCeleryワーカーを実行します。
- 6. 既存のワーカー/タスクに接続しますか?
- 7. neo4j HAクラスタに接続
- 8. キャノンはsocket.io-clientの特定のポートに接続します
- 9. Facebookのコメントボックスは、特定の写真に接続しました
- 10. node.js httpクライアントでソケット接続のタイムアウトを設定するには
- 11. クラスタでのマングース接続エラー
- 12. BigCouchクラスタ接続の問題
- 13. Node.js TCP接続
- 14. node.jsをhadoopプラットフォームに接続
- 15. Node.JSのデータベースに接続
- 16. Unixドメインソケットに接続するプログラムを特定します。
- 17. ドッカーコンテナ内の特定のシェルインスタンスに接続していますか?
- 18. Rabbitmq - C#からクラスタに接続する
- 19. NodeJSクラスタとデータベース接続
- 20. Redis単一インスタンスのスレーブ(スレーブ)をクラスタまたはセンチネルに接続
- 21. unity3D:socket.ioを使用してnode.jsに接続
- 22. データベース接続なしのSidekiqワーカーを実行する
- 23. node.js http、https、ws接続用のプロキシをグローバルに設定しました
- 24. node.js + mysql接続プール
- 25. Kafka-PythonとKerberosクラスタを接続する
- 26. HTTPS接続の宛先を特定します。
- 27. 端末ベースのnode.jsアプリケーションをsocket.ioサーバーに接続しますか?
- 28. 私のNode.jsローカルアプリケーションはAzure SQL DBに接続しません
- 29. node.jsサーバーに接続できません
あなたは創造的になり、プロセスを開始し、0mqのような何らかのキューを介してそれらと通信することができます。それはあなたが答えとして探しているものではないが、それは秋に戻る可能性があります – akaphenom
こんにちは@akaphenom、あなたの答えをありがとう。私は前にzmqについて聞いたことがありません。多分、zmqとnode.jsを使って同様の状況に対処する方法についてのリンクがありますか? – Gugis
あなたは 'nginx'や' HAProxy'のようなウェブサーバを使うだけでこれを解決できると思います。 'Docker'を使用して各サーバで同じアプリケーションの複数のインスタンスを起動し、' nginx'または 'HAProxy'を使ってロードバランスをとることができます。 –