1

切断時にクリーンアップするだけで十分ですか?明示的な切断を送信する前にブラウザが消えた場合はどうなりますか?

接続にバインドされたリソース(名前空間など)がリークされないようにするためのサーバー側のクリーンアップに推奨されるパターンは何ですか?

(重要な場合は、gevent-socketioを使用します)

4

1 に答える 1

1

トランスポートとしてWebSocketを使用する場合、ブラウザーを閉じると自動的にソケットが切断されます。たとえば、xhr-pollingを使用する場合、自動的に切断されません(gevent-socketioについて言えば)。

xhr-pollingを使用するときの私のアプローチは次のとおりです。

  1. データベースにログインしているユーザーIDとの間でソケットセッションIDを保存する
  2. 次のユーザーログイン時に、そのようなレコードが存在するかどうかを検出します
  3. レコードに保存されているセッションIDを使用して、未使用のソケットを切り離します。これは、新しいユーザーログインによって新しいソケットが生成されるためです。

ユーザーが新しいログインを実行するまで未使用のソケットが接続されている可能性があるため、これは迅速な解決策ではありませんが、ユーザーがログインすると一種のクリーンアップを実行します。

この記事は、私のソリューションよりもクリエイティブなものへのヒントになる可能性があります:http: //flask.pocoo.org/snippets/71/

于 2013-09-26T11:56:41.160 に答える