hotgo/server/internal/router/websocket.go

49 lines
1.4 KiB
Go

// Package router
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2022 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package router
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
controller "hotgo/internal/controller/websocket"
"hotgo/internal/controller/websocket/handler/admin"
"hotgo/internal/controller/websocket/handler/common"
"hotgo/internal/service"
"hotgo/internal/websocket"
)
// WebSocket ws路由配置
func WebSocket(ctx context.Context, group *ghttp.RouterGroup) {
prefix := g.Cfg().MustGet(ctx, "router.ws.prefix", "/socket")
group.Group(prefix.String(), func(group *ghttp.RouterGroup) {
group.Middleware()
group.Bind(
controller.Send, // 发送
)
// ws连接中间件
group.Middleware(service.Middleware().WebSocketToken)
// ws
group.GET("/", websocket.WsPage)
})
// 启动websocket监听
websocket.Start(ctx)
// 注册消息路由
websocket.RegisterMsg(websocket.EventHandlers{
"ping": common.Site.Ping, // 心跳
"join": common.Site.Join, // 加入组
"quit": common.Site.Quit, // 退出组
"adminMonitorTrends": admin.Monitor.Trends, // 后台监控,动态数据
"adminMonitorRunInfo": admin.Monitor.RunInfo, // 后台监控,运行信息
})
}