82 lines
1.6 KiB
Go
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()
|
|
}
|