【发布时间】:2020-07-17 03:21:42
【问题描述】:
我正在 Django 中构建一个消息传递系统,使用 web-socket 来接收消息。
这是我的试训,
from channels.consumer import AsyncConsumer
from channels.db import database_sync_to_async
class ChatConsumer(AsyncConsumer):
async def websocket_connect(self, event):
print("connected", event)
await self.send({
"type": "websocket.accept"
})
async def websocket_receive(self, event):
print("receive", event)
message = event['text']
obj = await self.create_obj(message=message)
print('Created...')
async def websocket_disconnect(self, event):
print("disconnected", event)
@database_sync_to_async
def create_obj(self, **kwargs):
obj = ChatMessage.objects.create(message=kwargs['message'])
return obj
当我启动客户端应用程序时,web-socket 已连接,我可以接收消息并且可以存储到数据库中。
connected {'type': 'websocket.connect'}
WebSocket CONNECT /ws/message [192.168.0.101:50148]
一段时间后,web-socket 会自动断开,
Application instance <Task pending coro=<SessionMiddlewareInstance.__call__() running at /Users/ajay/Desktop/workspace/projects/python/django/websock/venv/lib/python3.7/site-packages/channels/sessions.py:183> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x10b311510>()]>> for connection <WebSocketProtocol client=['192.168.0.101', 50148] path=b'/ws/message'> took too long to shut down and was killed.
断开连接后,我无法收到消息,当我重新加载客户端时,web-socket 已连接,有什么方法可以自动重新连接 we-socket 而无需重新加载客户端。我要求指导我一些建议来实现这一目标,这对我很有帮助,在此先感谢。
【问题讨论】:
标签: django websocket django-channels reconnect