亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

websocket:客戶端未使用 websocket 協議:“連接”標頭中未找到“升級”令牌

websocket:客戶端未使用 websocket 協議:“連接”標頭中未找到“升級”令牌

Go
GCT1015 2023-03-15 15:43:29
我正在嘗試與用 Go 和 JavaScript 前端編寫的服務器建立 websocket 連接。我在一個目錄中有以下文件:main.go 索引.html**這是我的 Go 代碼main.go:**package mainimport (    "fmt"    "log"    "net/http"    "github.com/gorilla/websocket")var upgrader = websocket.Upgrader{    ReadBufferSize:  1024,    WriteBufferSize: 1024,}func homePage(w http.ResponseWriter, r *http.Request) {    http.ServeFile(w, r, "./index.html")    conn, err := upgrader.Upgrade(w, r, nil)    if err != nil {        log.Println("Error in handler:", err)        return    }    log.Println("Client connected.")    for {        messageType, p, err := conn.ReadMessage()        if err != nil {            log.Println("Fehler in ReadMessage: ", err)            return        }        log.Println(string(p))        //echo message to client        if err := conn.WriteMessage(messageType, p); err != nil {            log.Println(err)            return        }    }}func setupRoutes() {    http.HandleFunc("/ws", homePage)}func main() {    fmt.Println("Server gestartet")    setupRoutes()    log.Fatal(http.ListenAndServe(":9100", nil))}這是 index.html 中的 HTML 和 JavaScript:<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Some unimportant html </title></head><body>        <script>        let socket = new WebSocket("ws://localhost:9100/ws");        console.log("Websocket started.");        socket.onOpen = () => {            console.log("Client started.");        }        socket.onclose = (event) => {            console.log("Socket closed: ", event);        }        socket.onError = (error) => {            console.log("Socket Error: ", error);        }        socket.onMessage = (msg) => {            console.log(msg);        }    </script></body></html>
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

我得以修復它。問題是我需要一個端點用于索引文件,另一個端點用于 websocket。所以我將相關部分更改為:


func websocketHandler(w http.ResponseWriter, r *http.Request) {

    conn, err := upgrader.Upgrade(w, r, nil) //conn is a websocket connection (aus http wird websocket protokoll)

    if err != nil {

        log.Println("Error in handler:", err)

        return

    }

    log.Println("Client connected.")


    

    for {

        messageType, p, err := conn.ReadMessage()

        if err != nil {

            log.Println("Fehler in ReadMessage: ", err)

            return

        }


        log.Println(string(p))


        //echo message to client

        if err := conn.WriteMessage(messageType, p); err != nil {

            log.Println(err)

            return

        }

    }

}


func homePage(w http.ResponseWriter, r *http.Request) {

    http.ServeFile(w, r, "./index.html")

}


func setupRoutes() {

    http.HandleFunc("/", homePage)

    http.HandleFunc("/ws", websocketHandler)


}


查看完整回答
反對 回復 2023-03-15
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號