【发布时间】:2020-11-25 09:41:22
【问题描述】:
达芙妮有一个参数--websocket_timeoutlink。如文档中所述,
--websocket_timeout WEBSOCKET_TIMEOUT
Maximum time to allow a websocket to be connected. -1 for infinite.
套接字已断开连接,无法进行进一步的通信。但是,客户端没有收到断开连接事件,因此无法优雅地处理它。我的客户如何知道套接字是否断开连接?我不想(在客户端)保留一个计时器,也不想继续重新检查它。
这就是我部署应用程序的方式
daphne -b 0.0.0.0 -p 8000 --websocket_timeout 1800 app.asgi:application
套接字每 30 分钟自动断开连接,但客户端永远不会知道这一点。
正确的方法是什么,.??
更新
尝试在连接关闭之前发送事件。我正在覆盖我的websocket_disconnect 处理程序,该处理程序在断开连接之前发送 json。但是,它不会发送事件。
class Consumer(AsyncJsonWebsocketConsumer):
async def websocket_disconnect(self, message):
"""Over-riding."""
print('Inside websocket_disconnect consumer')
await self.send_json(
"event": "disconnecting..."
)
await super().websocket_disconnect(message)
【问题讨论】:
标签: django django-channels daphne