package main import ( "allapp/biz/router/middleware" "allapp/conf" "allapp/db" "allapp/logx" "allapp/utils/idgen" "allapp/utils/jwtx" "allapp/utils/redisx" "log" "net/http" "github.com/cloudwego/hertz/pkg/app/server" "github.com/cloudwego/hertz/pkg/common/adaptor" "github.com/gorilla/websocket" "github.com/hertz-contrib/requestid" ) var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // 允许所有来源的连接 }, } func echo(w http.ResponseWriter, r *http.Request) { // 这里是通过升级协议来实现 WebSocket 连接 c, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("upgrade:", err) return } defer c.Close() // 不断监听 WebSocket 连接的数据 for { mt, message, err := c.ReadMessage() if err != nil { log.Println("read:", err) break } log.Printf("recv: %s", message) err = c.WriteMessage(mt, message) // 回显消息 if err != nil { log.Println("write:", err) break } } } func main() { // 初始化雪花id options := idgen.NewIdGeneratorOptions(conf.GetConf().Snowflake.WorkerID) idgen.SetIdGenerator(options) // 数据库 db.InitDB() // Redis redisx.Init() // 日志 logx.InitLog() // jwt jwtx.InitJwt() h := server.Default( server.WithBasePath(conf.GetConf().Server.BaseUrl), server.WithHostPorts(":"+conf.GetConf().Server.Port), ) // 全局中间件 h.Use(requestid.New()) h.Use(middleware.Log()) h.Use(middleware.Error()) h.Use(middleware.Auth()) h.Use(middleware.RefreshActive()) h.GET(conf.GetConf().Server.WsUrl, adaptor.HertzHandler(http.HandlerFunc(echo))) register(h) h.Spin() }