0

Channel API で Google App Engine を使用して Web アプリケーションを作成しています。これは、Ajax のようなことを行う最初の試みであり、私の問題を解決するための標準的な手法があると思いますが、それを見つけることができませんでした。

私のクライアント プログラムはサーバーにメッセージを投稿します。メッセージを送信できない場合 (チャネルが閉じられている場合など)、メッセージはどうなりますか? クライアントがタブレットを使用していて、ユーザーがワイヤレス ネットワークの範囲外に出たらどうしますか? 私のアプリケーションでは、メッセージが再送信されることが重要ですが、これを行う方法がわかりません。

チャネルが閉じられたら、サーバーから新しいトークンを要求する必要があることはわかっていますが、クライアントがそのトークンを取得して、ページをリロードせずに接続を開く方法がわかりません (したがって、データが失われます)。ここに示されているデモでは、クライアントはトークンを知る必要があります。

var channel = new goog.appengine.Channel({{token}});

しかし、クライアントがトークンを知る必要がないことを他の場所で読みました。-- それはどのように機能しますか?

また、onerror および onclose コールバック関数は失敗したメッセージを表示しないようですが、再送信する必要があるものをどのように知ることができますか?

誰かが私を正しい方向に押し進めることができれば、とても感謝しています。

4

1 に答える 1

0

「メッセージを再送信することが重要」である場合は、ブラウザではなくネイティブ クライアントを検討する必要があります。ユーザーが範囲外でブラウザ ウィンドウを閉じるかリロードすると、データは確実に失われます。

  1. 「クライアントがそのトークンを取得して、ページをリロードせずに接続を開く方法がわかりません」. AJAX を使用してサーバーを呼び出します。これにより、ページがリロードされません。

  2. クライアントは、チャネルを開くためにトークンを必要とします。それを回避する方法はありません。

  3. oncloseソケットが閉じるときに呼び出す必要があります。oncloseクライアントが接続を失った場合、ソケットがタイムアウトして呼び出されるまでに時間がかかることがあります。

于 2012-08-12T15:08:31.563 に答える