Django频道,断开连接

时间:2018-06-14 08:49:39

标签: django django-channels

我的WebSocket使用django频道。我想做的最后一件事就是在用户点击按钮时关闭套接字,所以在前端,我只是向服务器发送一条断开连接消息:

socket.send({action: 'disconnect'});

然后,在我的消费者中,我只是断开连接:

async def receive(self, text_data):
    text_data_json = json.loads(text_data)
    if 'action' in text_data_json and text_data_json['action'] == 'disconnect':
        await self.disconnect(0)


async def disconnect(self, close_code):
    await self.channel_layer.group_discard(
        self.room_group_name,
        self.channel_name
    )

为什么我的WebSocket无法正常断开连接? (我仍然收到消息)

2 个答案:

答案 0 :(得分:1)

def disconnect(self, close_code):
    # Leave room group
    async_to_sync(self.channel_layer.group_discard)(
        self.room_group_name,
        self.channel_name
    )

尝试一下

答案 1 :(得分:0)

async def receive(self, text_data):
    text_data_json = json.loads(text_data)
    if 'action' in text_data_json and text_data_json['action'] == 'disconnect':
        return await self.close()

您也可以尝试一下。如果需要,您还可以添加一个关闭代码。