首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“发送了非空的'Sec-WebSocket-Protocol‘标头,但未收到响应”Django通道

“发送了非空的'Sec-WebSocket-Protocol‘标头,但未收到响应”Django通道
EN

Stack Overflow用户
提问于 2020-11-10 05:57:06
回答 1查看 215关注 0票数 0

当我尝试通过websocket连接到服务器时,我只在chrome (不是safari,也不是firefox)中得到这个错误:Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received。服务器接受该连接,但chrome却意外地立即将其关闭。

这就是我在前端创建websocket连接的方法:

代码语言:javascript
复制
const websocket = new WebSocket('ws://127.0.0.1:8000/ws/', ['Token', 'user_secret_token'])

这是我的consumers.py的样子:

代码语言:javascript
复制
class MyConsumer(JsonWebsocketConsumer):
    def connect(self):
        self.room_group_name = 'example_room'

        # Join room group
        async_to_sync(self.channel_layer.group_add)(self.room_group_name, self.channel_name)

        self.accept()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-10 05:57:06

解决方案是在服务器上调用self.accept()时添加我使用的websocket协议(令牌)作为子协议参数。

下面是我的消费者现在的样子:

代码语言:javascript
复制
class MyConsumer(JsonWebsocketConsumer):
    def connect(self):
        self.room_group_name = 'example_room'

        # Join room group
        async_to_sync(self.channel_layer.group_add)(self.room_group_name, self.channel_name)

        # incorrect
        # self.accept()

        # correct
        self.accept('Token')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64759832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档