beego中使用gorilla/mux升级websocket,前端连接报错404

新手上路,请多包涵

问题描述

前端为react项目,后台是基于golang的websocket服务器,使用beego框架搭建。在main函数中使用包
"github.com/gorilla/websocket"
"github.com/gorilla/mux"
进行websocket的相关配置。
使用react连接,报错:
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配置?

阅读 3.6k
1 个回答

你改用mux的时候,尝试加一个http的路由,再访问下, 看下是不是404。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题