簡體   English   中英

托管在 Heroku 上時出現“WebSocket 握手期間出錯”

[英]“Error during WebSocket handshake” when hosted on Heroku

我正在 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

感謝 Heroku 日志,我能夠得到實際的錯誤消息:

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

這個答案幫助我解決了這個問題: https://stackoverflow.com/a/59909118/7446564

總而言之:如果您在 Django 上啟動 websocket 時出錯,請確保您的.asgi文件設置正確。 我還將在下面附上我的 Procfile,因為第一次設置它也是一個小過程,我希望它也可能有所幫助:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM