クロスプラットフォームのモバイルクライアント(Android、PC- Javaで記述されたものとObjective-Cで記述されたiOS )とGoogle AppEngine(Java)サーバーの間で双方向通信を実装したいと思います。そうすべき:
- (クライアントが接続した後)各側が通信を開始できるようにします。
- レイテンシが比較的短い(X秒ごとにポーリングするのは問題があります。私の理解では、AppEngine上にあるため、httpリクエストを長時間ポーリングすることはできません)。
- 最大で数KBのテキストで、通常ははるかに小さいメッセージをサポートします。
リバースエンジニアリングされたJavaクライアントでChannelAPIを使用することを検討しましたが、これはチャンスをつかんでいるようです(公式にはサポートされていないため)。また、Objective-Cの解決策があるかどうかさえわかりません。私は、自分でそれを実行して実装することを好みません。
次に、XMPPの使用を検討しました。ただし、ユーザーにJabberアカウントを入力させずにこれを行う方法はわかりませんが、これはできません(通信はバックグラウンドで行われます)。クライアントの一時ユーザーを作成する方法はありますか?
C2DMも良い選択肢ではないようです。これはクロスプラットフォームではなく、通信ではなく「通知」に非常に重点を置いているようであり、メッセージ転送の成功を保証するものではありません。
それとも、私が考えていなかったまったく異なるアプローチがありますか?この種のコミュニケーションは私にとって比較的新しいものです。
ありがとう!
編集:
バックグラウンド通信を探しているので、新しいオプションが思い浮かびました。クライアント識別子としてリソースを持つ単一のXMPPユーザーです。つまり、アプリ用に1つのXMPPユーザー( "AppBackgroundUser@domain.com"など)を作成し、クライアントにリソースとして独自のID( "AppBackgroundUser@domain.com/UNIQUEID")を接続させます。 )。この方法に欠点や重大なセキュリティ上の欠陥はありますか?