1
我試圖用負載平衡器在aws(無docker)上使用golang和大猩猩創建websockets,我有一個連接到負載平衡器的證書。在aws中使用golang創建websocket
我設法使代碼與http一起工作,但是當我嘗試通過https使用代碼時,它不起作用。
我在做什麼錯? 當從http轉移到https時,我將客戶端請求更改爲wss而不是ws,並將證書添加到負載平衡器。 這是我的代碼。 這是我main.go
http.HandleFunc("/wss", serveWs)
fmt.Printf("Listening on port %s\n\n", port)
if err := http.ListenAndServe(":"+port, nil); err != nil {
fmt.Printf(err.Error())
}
這是serveWs:
func serveWs(w http.ResponseWriter, r *http.Request) {
upgrader.CheckOrigin = func(r *http.Request) bool {
// allow all connections by default
return true
}
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Println(err)
if _, ok := err.(websocket.HandshakeError); !ok {
log.Println(err)
}
return
}
var lastMod time.Time
if n, err := strconv.ParseInt(r.FormValue("lastMod"), 16, 64); err != nil {
lastMod = time.Unix(0, n)
}
go writer(ws, lastMod, w, r)
reader(ws)
}
這是請求:
var conn = new WebSocket("wss://https://www.weldpad.com/wss?"
當我從發送請求客戶端出現以下錯誤:
失敗:WebSocket握手期間出錯:意外的響應代碼:400
看看服務器日誌,我明白了。
「找不到升級頭與令牌「的WebSocket」
這是我的負載平衡器配置:
我也曾嘗試它和響應是:wsconnect.html WebSocket連接到'wss://www.weldpad.com/wss'失敗:在WebSocket握手期間出錯:意外的響應代碼:400 – WeldPad
那麼這是一個更好的錯誤或消息。它從服務器獲得響應。現在,您需要查看服務器,可能會檢查服務器日誌,並瞭解它返回400代碼的原因。 –
看着日誌,我發現「websocket:無法找到具有令牌'websocket'的升級頭」,我正在研究它。 – WeldPad