gpt4 book ai didi

amazon-web-services - 在aws中使用golang创建websocket

转载 作者:IT王子 更新时间:2023-10-29 02:22:23 26 4
gpt4 key购买 nike

我正在尝试使用带有负载均衡器的 aws(没有 docker)上的 golang 和 gorilla 创建 websockets,我有一个连接到负载均衡器的证书。

我设法使代码适用于 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())
}

这是服务端:

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’的升级 header ”

这是我的负载均衡器配置:

Load Balancing Configuration

最佳答案

我相信它应该是 wss://www.weldpad.com/wss? 而不是 wss://https://www.weldpad.com/wss?

关于amazon-web-services - 在aws中使用golang创建websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com