2

AppEngineにチャットウェブサイトを実装したいと思っています。しかし、AppEngineではサーバープッシュを使用できないことがわかりました。(30秒後に応答を強制終了するため)。

  1. では、使用できる他の方法は何ですか?ポーリングはユーザーエクスペリエンスを低下させますか?つまり、ユーザーはサーバーから新しいメッセージを取得するためにしばらく待つ必要がありますか?

  2. 理想的なポーリング間隔はどれくらいですか?

  3. 非常に短いポーリング間隔を使用すると、帯域幅が使い果たされますか?パフォーマンスの問題が発生しますか?

4

4 に答える 4

2

これは今ではかなり古い質問ですが、同様の回答を探していました。Channel API( http://code.google.com/appengine/docs/java/channel/ ) の方がこのタスクに適していると思います。私が理解している限りでは、XMPP はアプリとのやり取りには適していますが、他のユーザーとのやり取りには適していません。チャネル API は、HttpRequest を介してプッシュ通知を実装します。ここでチャット ルームの例を見つけました: https://bitbucket.org/keakon/channelchat

于 2011-02-18T06:26:59.273 に答える
1

Webサイトの代わりにXMPPを使用することはできませんか?それははるかに良いアプローチでしょう。ポーリングは確かにうまく拡張できず、優れたユーザーエクスペリエンスを確実に提供しません。

appengineを使用したXMPP

于 2010-03-24T13:06:59.710 に答える
0

接続が切断されるまで接続を保持して(つまり、応答を送信せずに)接続を再確立することで、この問題を回避している人の話を聞いたことがあります。30秒はそれほど多くはありません。

このようにした場合でも、30秒ごとにポーリングするよりもユーザーの応答性が高くなります。

バンドウィズの使用法について:ペイロードに応じて、「一般的な」HTTPリクエストは、特にCookieの場合、数百バイトから数キロバイトの範囲になります。

たとえば、30秒ごとに5kB(悲観的)の平均サイズで、合計すると24時間あたり約14MBになります。たぶん、これらの接続のために送信されないようにCookieにパスを設定することで、サイズを縮小することができます。たぶん、30秒ごとにペイロード全体を再度送信する必要はありません。

于 2010-03-24T15:31:51.250 に答える
0

はい、チャネル API が最適なソリューションです。gwt を使用するとさらに優れています。

http://www.dev-articles.com/article/Google-App-Engine-sending-messages-with-XMPP-393002

于 2011-04-15T08:50:56.693 に答える