也许这是Flask的一个问题,服务器端没有处理断开连接事件的方法。
在Response类中,有一个名为"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();
}
}
有什么不对的地方吗?
欢迎提出任何代码建议或解决方案。
提前致谢!