1

私は過去数日間、自分の問題の良い解決策を見つけようと輪になって走り回っていました。ここでの主な鍵は、これがiOSアプリケーション用であるということです。私が望んでいるのは、あるデバイスから別のデバイスの更新にすばやく通信することです。したがって、ユーザー1がアクションを実行する場合、ユーザー1がこのアクションを実行したことをユーザー2にリアルタイムで伝えたいと思います。

さまざまな理由でAppleプッシュ通知を使用したくありません。ですから、それは問題外です。PusherやPubNubのようなサービスを調べましたが、それらは非常に高価です(そして、途方もなく少ない数の同時接続しか許可していません、〜2500)。Google AppEngineのChannelAPIも調べましたが、Javascriptを介して機能するため、iOSで日陰のテクニックを使用して実装する必要があります。そして正直なところ、私はそれを使用したくありません。

そこで、今はGoogleAppEngineでXMPPを調べています。やりたいことができるようですが、全体像がわかっているかわかりません。XMPPメッセージを使用して目的を達成できませんでした。つまり、ユーザー1がアクションを実行すると、JSONメッセージでユーザー2にすばやく通知できますか?

ここでの主な鍵は、ユーザーの一意のIDを使用して、バックグラウンドでXMPPのユーザー登録を実行する必要があるということです。これは、ユーザーの介入なしに自動的にuser-unique-id@my-app-engine-domain.comのようなJabber IDを作成することは可能ですか?

全体として、これは実行可能な解決策ですか?私は何が欠けていますか?いくつかの例外は何ですか?

4

2 に答える 2

2

あなたが説明したことはすべて、XMPPでかなり簡単に実行できるように聞こえます。

ほんの2、3のポイント。

  • もちろん、これはXMLベースであるため、JSONメッセージはXMLスタンザ内に埋め込まれ、必要に応じて適切にエスケープされます。
  • ユーザー登録はサーバーの実装によって決定されますが、ほとんどの場合、カスタム認証フック(LDAPなど)が許可されると思います。したがって、外部登録メカニズムを持つことは問題ではなく、かなり一般的なアプローチです。
  • iOSを使用しているため、XMPPライブラリとしてXMPPFrameworkを検討する必要があります。
  • ユースケースによっては、変更を加えたときにメッセージを受け取るデバイスの数に応じて、XMPPpubsubも更新を確認することをお勧めします。私はこのアプローチを使用しましたが、リアルタイムのクライアント間更新でうまく機能します。
于 2012-11-08T14:03:52.667 に答える
1

AppEngineはクライアントとしてのみXMPPをサポートします。メッセージを送受信できます。ここで重要なのは、XMPPメッセージを送信するためのドキュメントを見ると、すべてのクライアントがGAEによって提供されていない独自のアドレス(JID)を持っている必要があるということです。

したがって、状況をサポートするには、外部XMPPサーバーが必要です。このサーバーでは、すべてのクライアントが独自のJIDを取得し、XMPPメッセージをクライアントに送信できます。

于 2012-11-08T06:39:06.597 に答える