也许这是 Flask 中的一个问题,没有办法在服务器端处理断开连接事件。
在Response 类中,有一个名为“call_on_close”的方法,我们可以在其中添加一个不带参数的函数,例如on_close(),它会在调用响应对象的close 方法时触发,但在我调用EventSource 时不会发生这种情况。在 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();
}
}
有什么不对吗?
任何带有代码的建议或解决方案表示赞赏!
提前致谢!