Я использую Django-каналы для предоставления мгновенных уведомлений при создании нового экземпляра модели.
Для этой цели я использую django-каналы и SyncConsumer. Все работает как надо, кроме websocket_disconnect
, который вызывается в цикле n раз.
Вот мой потребительский код:
class BaseConsumer(SyncConsumer):
def websocket_connect(self, event):
self.send({"type": "websocket.accept"})
def websocket_receive(self, event):
# do some stuff here
def websocket_disconnect(self, event):
print("websocket_disconnect")
Вот лог с моего веб-сервера:
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
api_1 | websocket_disconnect
И так будет продолжаться до тех пор, пока я не остановлю веб-сервер.
Это происходит как при закрытии вручную соединения во внешнем интерфейсе (я использую Javascript, поэтому я вызываю ws.close()
), так и при закрытии вкладки браузера / клиента.
Мне это не кажется правильным, так как я слышу, как фанаты моего компьютера работают как в аду. Как я могу остановить запуск этого метода после закрытия соединения? Поскольку само соединение закрывается должным образом, как я могу убедиться в методе javascript onclose
, который запускается во внешнем интерфейсе только один раз.
Кто-нибудь еще испытывал что-то подобное?
Спасибо!