我是 Rust 和 WebSockets 的初學者,我正在嘗試在 Heroku 上部署我撰寫的一個小聊天后端(一切都在 localhost 上運行)。構建進展順利,我可以看到應用程式正在運行,我現在正在嘗試從本地 HTML/Javascript 前端連接到 WebSocket,但它無法正常作業。
這是我在 Heroku 上的 rust 服務器上創建 WebSocket 的代碼(使用 tungstenite WebSocket crate):
async fn main() -> Result<(), IoError> {
let port = env::var("PORT").unwrap_or_else(|_| "8080".to_string());
let addr = format!("0.0.0.0:{}", port);
// Create the event loop and TCP listener we'll accept connections on.
let try_socket = TcpListener::bind(&addr).await;
let listener = try_socket.expect("Failed to bind");
println!("Listening on: {}", addr);
這是我的 Javascript 檔案中嘗試連接到該 WebSocket 的代碼:
var ws = new WebSocket("wss://https://myappname.herokuapp.com/");
我的 Web 客戶端在控制臺中收到以下錯誤:
WebSocket connection to 'wss://https//rocky-wave-51234.herokuapp.com/' failed
我搜索以找到我的問題的答案,但不幸的是到目前為止還沒有找到解決方法。我發現我可能必須先在后端創建一個 HTTP 服務器然后將其升級到 WebSocket 的提示,但是我找不到有關如何執行此操作的資源,甚至不知道這是否是真的我的問題的答案。幫助將不勝感激,謝謝!
uj5u.com熱心網友回復:
我認為您的錯誤是您使用的網址:
"wss://https://myappname.herokuapp.com/"
URL 通常以<protocol>://. 這里的相關協議是:
http- 未加密的超文本https- 加密的超文本ws- 未加密的 websocketwss- 加密的網路套接字
所以如果你的 URL 是一個加密的 websocket,它應該只以開頭wss://,一個連接不能同時有多個協議:
"wss://myappname.herokuapp.com/"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490426.html
