Heroku 关于发送流响应的文档说:
“如果您正在发送流式响应,例如服务器发送的事件,您需要检测客户端何时挂断,并确保您的应用服务器及时关闭连接。”
我一直在使用django-sse在 Django 中使用服务器发送事件在 Heroku 上进行试验。它使用一个永远循环的迭代器,从 Redis 发布/订阅通道读取消息并将它们发送到客户端:
def iterator(self):
connection = _connect()
pubsub = connection.pubsub()
pubsub.subscribe(self.get_redis_channel())
for message in pubsub.listen():
if message['type'] == 'message':
event, data = json.loads(message['data'])
self.sse.add_message(event, data)
yield
问题是,如果客户端断开连接,我想打破这个循环,这样我就可以关闭与 Redis 的连接。如何检测客户端何时断开连接?