处理客户端升级请求

问题描述 投票:0回答:1

我在这里可能很愚蠢,但我正在使用 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 连接从服务器发送消息,

谢谢朋友们:)

go websocket server client gorilla
1个回答
0
投票

Websocket的创建是由客户端发起的。服务器不能简单地将任意请求升级到 Websocket,然后将其返回给客户端,而只能升级对 Websocket 的显式请求。在升级之前也不可能提供正常的 HTTP 响应,唯一可能的响应是升级成功或失败。

© www.soinside.com 2019 - 2024. All rights reserved.