XMPP BOSH への HTTP Bind アプローチを使用して、Javascript で XMPP クライアントを実装することにかなり成功しました。AMQP については知りませんが、クライアント側のアクセスには XMPP が気に入っています。その理由を一言。
ejabberd にはすでに BOSH サポートが含まれており、Javascript (およびおそらく Flash) を使用するには、ejabberd が HTTP 要求をリッスンするように構成したポートに要求をリダイレクトするようにサーバーに指示するだけで済みます。(これも、今日のブラウザの Javascript セキュリティ モデルが、異なるドメインや異なるポートへの Javascript リクエストを禁止しているためです。)
XMPP は非常に単純な小さな XML ドキュメントの集まりであるため、選択した任意の言語でそれらをエンコードするのは非常に簡単です。
広くサポートされているため、ユーザーにサービスへの登録を要求する必要がなくなる可能性があります。
XMPP を実装すると、ゲームにインスタント メッセージングのサポートを簡単に追加でき、Jabber ネットワークの残りの部分 (Google トークを含む) とフェデレーションできます。
私は AMQP について何も知らないので、それらを比較することはできませんが、将来のマルチプレイヤー プロジェクトで常に最初に XMPP を検討する理由は言えます。
私の個人的な選択理由ejabberd
は単純です。Debian へのインストールと設定が非常に簡単だからです。私は、Erlang と Java にほとんど完全に慣れていません。しかし、Erlang について私が理解しているのは、スケーラビリティを容易に達成できるというejabberd
ことです。人々はそれを達成したと言っています。
サーバー側のロジック チェックを行いたい場合は、申し訳ありませんが、適切な方法を知りません。私はプロキシ PHP スクリプトを使用して、着信 XMPP BOSH メッセージのサニティ チェックを行い、Apache のmod_rewrite
.
上記のようにmod_rewrite
、XMPP サーバーは「メイン」Web サーバーとは異なるポートでリッスンし、Javascript クロスドメイン セキュリティ モデルを使用するため、(PHP またはその他の方法で) 何らかのプロキシを行う必要があります。XMLHTTPRequest
別のポートで行うことはできません。
そのため、選択した XMPP サーバーに BOSH 要求を中継する際に、サニティ チェックを行うのが最も簡単な場合があります。サーバー ソフトウェアを掘り下げることは、この種のチェックを行う最善の方法ではない場合があります。時間がかかり、ゲームの他の部分との統合が難しくなる可能性があります。
または、 XMPP コンポーネントと ejabberd モジュールについて言及している回答に出くわしました。これは私にとっても興味深い読み物になるでしょう。
頑張ってください。ゲームが完成したら、必ずゲームの名前をコメントに残してください -- ぜひ見てみたいです :-)
他の誰かがあなたと非常によく似た質問を投稿したことに気づきました。その回答には、さらに興味深い情報が含まれています。
Flash で XMPP を使用する場合:
それでも、Flash で HTTP バインディング (BOSH) を使用できます。実際、HTTP バインディングは Javascript が XMPP にアクセスできるようにしますが、切断されることが多いモバイル接続など、さまざまなアプリケーション向けに考案されました。
Web ベースのクライアント JWChat と ejabberd 間の通信 (BOSH に関する情報) と、クロスプラットフォーム クライアント Psi と ejabberd 間の通信 (プロトコル自体に関する情報) を観察することで、接続を確立する方法をほぼ理解しました。JWChat と WebKit の Web Inspector、または Firefox の Firebug を使用すると、サーバーに対して行われる XMLHttpRequests を簡単に追跡できます。Psi を使用すると、XML コンソールをオンにして、通信ログを読み取ることができます。選択した言語でクライアントのプロトタイプを作成することと組み合わせると、BOSH と XMPP の学習は非常に簡単であることがわかりました。
また、次の XEP も役立ちます: XEP-0124、XEP-0206。
私が今読んでいる O'Reilly の本、「XMPP: The Definitive Guide」 (P. Saint-Andre、Kevin Smith、Remko Tronçon; Apple の App Storeでははるかに安い) も、「なぜ物事が行われるのか」という感覚を与えてくれます。ありのまま」であり、XMPP の多くの小さなことやさまざまなアプリケーションについて説明しています。
その後、BOSH ベースのクライアントの実装はかなり簡単になる可能性があります。ボタンの再生と一時停止を行う以外に、Flash を使用したコーディングの経験がないので、これは大まかに考えてください :-)