Files
workspace/code/allapp/allapp-go2/main.go
T
2026-02-25 17:31:09 +08:00

82 lines
1.6 KiB
Go

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()
}