Возможно, это проблема в Flask, нет способа обработать событие разъединения на стороне сервера.
В классе Response существует метод с именем "call_on_close", где мы можем добавить функцию без аргумента, например. on_close(), он будет запущен при вызове метода закрытия объекта ответа, но этого не происходит, когда я вызываю EventSource.close() со стороны клиента в Javascript.
код на стороне сервера:
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();
}
}
Что-то не так?
Приветствуются любые предложения или решения с кодом!
Спасибо заранее!