【问题标题】:Django channels 2.0 websocketbridge.js 403 when self.code(code=1007)Django 通道 2.0 websocketbridge.js 403 当 self.code(code=1007)
【发布时间】:2018-04-24 19:24:53
【问题描述】:

我正在为聊天室运行 django 频道 2.0。在连接期间,我检查房间名称。如果它不存在,我使用 self.code(code=1007) 拒绝连接。 ASGI 日志显示成功拒绝如下:

WebSocket REJECT /ws/discuss/asdf/asdf1

但是,在客户端的 js 库 websocketbridge(安装中的股票)抛出了一个意外的异常,如下所示:

Error during WebSocket handshake: Unexpected response code: 403

在打印以控制台接收到的参数。我得到以下信息:

CloseEvent {isTrusted: true, wasClean: false, code: 1006...

我想在前端捕获消费者抛出的错误码1007,以便优雅地处理拒绝。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: python-3.x websocket django-channels


    【解决方案1】:

    我犯的错误是在消费者的连接方法中,我没有通过使用 self.accept() 来接受问题。我首先接受了连接,并在评估条件后发出了 self.close(code=4004)。我可能错了,但我希望在满足条件之前不接受连接。

    【讨论】:

    • 您解决了这个问题吗?我有同样的问题,无论我在 self.close 中指定什么代码,CloseEvent 总是:CloseEvent {isTrusted: true, wasClean: false, code: 1006...
    • 感谢您发布您的答案,这也帮助了我。我在 Django 用户组中提出了这个问题,它预期的行为:groups.google.com/forum/#!topic/django-users/4BEbwPTP2gs 只有在接受套接字后才能返回自定义关闭代码。在接受之前关闭它会导致返回 http 403,然后关闭代码是特定于浏览器的(但通常是 1006)。
    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 2011-10-29
    • 2017-02-20
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多