多分これはフラスコ内の問題があるからSSEクライアントの切断を検出する方法を、サーバー側で断線イベントを処理する方法はありません。Pythonのフラスコは、フロントエンドのJavascript
レスポンスクラスには、 "call_on_close"という名前のメソッドがあります。このメソッドでは、引数なしの関数を追加できます。 on_close()、レスポンスオブジェクトのcloseメソッドが呼び出されたときに起動されますが、私はJavaScriptでクライアント側からEventSource.close()を呼び出すとき、これは起こりません。サーバー側で
コード:クライアント側で
from flask import Response
r = Response(stream(), ...)
r.call_on_close(on_close)
return r
def on_close():
print "response is closed!"
def stream():
... # subscribe to redis
for message in pubsub.listen():
....
yield 'data: %s\n\n' % message
:SSEでページにアンロードハンドラを追加
$(window).unload(
function() {
sse.close();
}
}
何が間違っていますか?
コードによるご提案または解決方法はありがたいです!
ありがとうございます!