2

チャネルAPIを使用するアプリケーションがあります。接続は常に有効(24x7)である必要があり、チャネルが切断されるたびに新しいチャネルが自動的に作成されるように実装しました。これはほとんどの場合正常に機能しますが、onError()メソッドが呼び出されないシナリオがあります(接続されたWIFIの変更、コンピューターがスリープ状態になって戻ってくるなど)。そして、私のJSアプリは、チャネルがまだ生きているのに生きていないと誤って想定しています。

私が考えた解決策の1つは、メッセージの送信を求めるサーバーにpingを実行することです。キープアライブのように。しかし、これはサーバーにとって大きな負荷です。(たとえば、10秒ごとにping要求を送信する1000クライアントは、1秒あたり100要求のようなものです)

そのため、意図せずにサーバーにDoS接続を行わないように、接続がローカルで有効かどうかを確認する方法があるかどうか疑問に思いました。

ありがとう

4

2 に答える 2

3

クライアントにキープアライブ メッセージを要求させる代わりに、キープアライブ メッセージを送信するようにサーバーに指示する GAE cron ジョブを作成できます。そうすれば、クライアントの数に関係なく、10 秒ごとに 1 つのリクエストしかありません。

ただし、アクティブなクライアントのリストを memacache/datastore に保存する必要があります。

于 2013-02-22T07:29:21.593 に答える
0

残念ながら、サーバーにメッセージを送信して、妥当な時間内に戻ってくるかどうかを確認するように依頼する以外に選択肢はありません。

JS アプリは定期的にいくつかの小さな (空の) 静的ファイル ( GAE の外部にある場合もあります) に ping を実行して、接続が切断されたか、コンピューターがスリープ状態になったかどうかを確認できます。それは安くなる可能性がありますが、100%の保証はありません.

于 2013-02-22T06:13:23.837 に答える