AppEngineに常駐せず、通信Webクライアント(ブラウザー+ JavaScript)とモバイルクライアント(ActionScript)を配置するチャット機能を備えたアプリケーションを開発しています。AppEngineでXMPPプロトコルを使用することを考えています(その後、Googleのチャット機能にサーバーのみを使用し、残りはサーバーに残します)。これが可能かどうか教えてください。Channel APIとの違いは何ですか?ありがとう
4 に答える
XMPP と Channel API は、スタックの 2 つの異なるレベルで問題を解決します。
XMPP は、あるエンドポイントから別のエンドポイントにメッセージを取得する一般的な方法について説明しています。Windows、Linux、OSX などの既存の XMPP クライアントがあり、C++、Python、javascriptなどで記述された既存の XMPP クライアント ライブラリがあります。既に XMPP クライアントを持っていることがわかっているユーザーにテキストを配信したいだけの場合は、 XMPP App Engine API は明らかなソリューションです。クライアント エクスペリエンスを大幅に制御し、それに費やす時間を確保したい場合は、既存の XMPP ライブラリを使用してカスタム クライアントを作成することをお勧めします。
Channel API は、メッセージを送信するためのサーバー側のメソッドと、メッセージを受信するためのクライアント側のメソッドを記述します。App Engine の実装は、永続的な HTTP 接続を必要とするため、Web アプリにとって扱いにくい部分である JavaScript クライアントを提供します。任意の手段を使用して、別のプラットフォームでチャネル API を確実に再実装できます (App Engine の場合、Google トーク スタックを使用します。バックエンドでは XMPP を使用し、フロントエンドではロング ポール HTTP 接続を介して JSON を使用します)。
基本的な問題は、実装にどれだけの抽象化が必要かということです。Channel API は、XMPP API よりもはるかに抽象化されており、javascript を介した接続を容易にするクライアント ライブラリを提供します。
私が理解している限り、ChannelAPI は Google XMPP サービスの背後にあるバックボーンです。クライアントの JavaScript と GAE でホストされている Web アプリケーションの間で行の JSON オブジェクトを非同期的に送受信 (サーバー プッシュ) したい場合は、ChannelAPI が適しています。
Channel API は、XPCと呼ばれるものを使用して、IFrame 経由で Google の GTalk クライアントと通信します。このクライアントは、ブラウザーとアプリ間の双方向通信を容易にします。提供されている JavaScript ライブラリは、現在のWebSocket の APIに大まかにマッピングされており、AppEngine でサポートされている場合は、Channel API から WebSocket への移行が容易になります。
XMPP は Channel API のバックボーンであり、機能のスーパーセットであると私は信じています。たとえば、XMPP API は 招待状をサポートしています。
したがって、はい、チャネル API (ブラウザ) と XMPP (どこでも) を使用してチャット機能を構築できます。
XMPP APIは、アプリとGoogleトークなどのXMPPクライアント間の通信を容易にします。
Channel APIは、Webソケットを使用してアプリからWebブラウザーにデータをプッシュするために使用されます。
どちらもチャットアプリの一部として使用できます。どちらを選択するかは、チャットクライアントがXMPPクライアントとWebブラウザのどちらを使用するかによって異なります。