问题描述

"github.com/gorilla/websocket""github.com/gorilla/mux"WebSocket connection to 'ws://localhost:7777/ws' failed: Error during WebSocket handshake: Unexpected response code: 404

问题出现的环境背景及自己尝试过哪些方法

react中websocket相关配置代码不变的情况下,在beego中直接使用

// main()中
http.HandleFunc("/ws",wsHandleConn)
err := http.ListenAndServe("0.0.0.0:7777", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }else{
        log.Println("websocket创建成功")
    }
//升级请求为websocket,发送数据
func wsHandleConn(w http.ResponseWriter,r *http.Request) {
    // 将http协议升级成websocket协议
    ws, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Fatal(err)
        defer ws.Close()
    }
    clients[ws] = true
}

可以连接成功
图片描述
但是如果使用

import (
    "encoding/json"
    "fmt"
    "github.com/gorilla/websocket"
    "github.com/gorilla/mux"
    "io/ioutil"
    "log"
    "net/http"
    "time"
)
// main()中
Router := mux.NewRouter()
Router.HandleFunc("/ws",wsHandleConn)
Router.HandleFunc("/ws/sayHi",sayHi)

其他地方不做修改,则连接失败
图片描述

你期待的结果是什么?实际看到的错误信息又是什么?

如何正确使用golang的gorilla/mux进行websocket配置?