TypeError:对象 ChatConsumer 不能用于 'await' 表达式 WebSocket DISCONNECT /chat/dsd [127.0.0.1:13820]

问题描述 投票:0回答:0

消费者.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'是房间代码。

javascript python django django-channels
© www.soinside.com 2019 - 2024. All rights reserved.