我在这里可能很愚蠢,但我正在使用 Gorilla Mux 将 HTML 请求升级到 WS,并且似乎无法弄清楚升级后如何访问网页上的 WebSocket,
func loadSecureThing(w http.ResponseWriter, r *http.Request) {
if helpers.IsLocalRequest(r) {
http.ServeFile(w, r, "secure-login-thing.html")
c, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Println("Upgrade error: Please contact server admin.")
return
}
//Authentication stuff
defer c.Close()
我已经查找了如何处理升级,但我看到他们打开了一个新的 WS 连接
const wss = new WebSocket('wss://route');
socket.onopen = function (event) {
document.getElementById("submit-btn").addEventListener("click", function () {
//send auth stuff with JWT
})
}
当我们已经有一个已升级的 WSS 时,这会创建一个新的 WSS,所以我很困惑如何在客户端访问此升级后的请求。
我希望能够在客户端升级初始请求后,通过此 WSS 连接从服务器发送消息,
谢谢朋友们:)
Websocket的创建是由客户端发起的。服务器不能简单地将任意请求升级到 Websocket,然后将其返回给客户端,而只能升级对 Websocket 的显式请求。在升级之前也不可能提供正常的 HTTP 响应,唯一可能的响应是升级成功或失败。