消费者.py: `导入json 从 channels.generic.websocket 导入 WebsocketConsumer 从 asgiref.sync 导入 async_to_sync
聊天消费者类(WebsocketConsumer): 定义连接(自我): self.room_name = self.scope['url_route']['kwargs']['room_name'] self.group_name = f'room_{self.room_name}'
# self.room_group_name = 'test'
async_to_sync(self.channel_layer.group_add)(
self.group_name,
self.channel_name
)
self.accept()
async_to_sync(self.channel_layer.group_send)(
f'room_{self.room_name}',
{
'value':json.dumps({'status':'online'})
}
)
data = {
'type':'connected'
}
self.send(text_data=json.dumps(
{
'payload':'connected',
}
))
def receive(self,text_data):
data = json.loads(text_data)
# message = text_data_json['message']
payload = {
'message': data.get('message'),
'sender': data.get('sender')
}
async_to_sync(self.channel_layer.group_send)(
f'room_{self.room_name}',
{
'type':'send_message',
'value':json.dumps(payload)
}
)
def disconnect(self, close_code):
pass
def send_message(self, text_data):
data = text_data.get('value')
self.send(text_data = json.dumps(
{
'payload':data
}
))
`
我正在制作聊天室应用程序,您在登陆时输入房间代码和用户名,然后您将被重定向到聊天室页面。在聊天室中,您有一个用于发送消息的输入字段,但是当我尝试发送消息时,它在控制台中显示“WebSocket 连接到‘ws://127.0.0.1:8000/chat/dsd’失败”
url中的'dsd'是房间代码。