【问题标题】:"Error during WebSocket handshake" when hosted on Heroku托管在 Heroku 上时出现“WebSocket 握手期间出错”
【发布时间】:2020-07-07 07:28:12
【问题描述】:

我正在 Django 和 atm 上创建一个聊天服务器,尝试实现 websockets。 它在本地运行良好,但每当我在 Heroku 上启动它时,websocket 就无法访问。 这是我的客户端脚本:

var loc = window.location
var ws_start = 'ws://'
if (loc.protocol == 'https:'){
    ws_start = 'wss://'
}
var endpoint = ws_start + loc.host + loc.pathname
var socket = new WebSocket(endpoint)

完整的错误代码:

WebSocket connection to 'wss://my-app.herokuapp.com/chat' failed: Error during WebSocket handshake: Unexpected response code: 500

我已经看到了许多类似的问题,它们要么没有得到解答,要么正在深入研究如何处理 SSL 证书。如果有人要确认这是真的,那么有一个答案可能会为我(和其他人)节省很多挫败感。太老了,发布后没有反馈:https://stackoverflow.com/a/45173822/7446564.

【问题讨论】:

    标签: python django heroku websocket


    【解决方案1】:

    感谢 Heroku 日志,我能够得到实际的错误消息:

    Django daphne asgi: Django can only handle ASGI/HTTP connections, not websocket

    这个答案帮我解决了这个问题:https://stackoverflow.com/a/59909118/7446564

    总之:如果您在 Django 上启动 websockets 时出错,请确保您的 .asgi 文件设置正确。我还将在下面附上我的 Procfile,因为第一次设置它也是一个小过程,我希望它也可能会有所帮助:

    web: daphne my-app.asgi:application --port $PORT --bind 0.0.0.0 -v2

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      相关资源
      最近更新 更多