55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
|
|
package cmd
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"github.com/gogf/gf/v2/frame/g"
|
||
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
||
|
|
"github.com/gogf/gf/v2/os/gcmd"
|
||
|
|
"leke/internal/controller"
|
||
|
|
"leke/internal/controller/websocket"
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
Main = gcmd.Command{
|
||
|
|
Name: "main",
|
||
|
|
Usage: "main",
|
||
|
|
Brief: "start http server",
|
||
|
|
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
|
||
|
|
s := g.Server()
|
||
|
|
|
||
|
|
// ... existing code ...
|
||
|
|
// CORS 中间件
|
||
|
|
s.Use(func(r *ghttp.Request) {
|
||
|
|
r.Response.CORS(ghttp.CORSOptions{
|
||
|
|
AllowOrigin: "http://localhost:3000,http://localhost:8080",
|
||
|
|
AllowMethods: "GET,POST,PUT,DELETE,OPTIONS",
|
||
|
|
AllowHeaders: "Content-Type,Authorization,X-Requested-With",
|
||
|
|
AllowCredentials: "true",
|
||
|
|
MaxAge: 3600,
|
||
|
|
})
|
||
|
|
if r.Method == "OPTIONS" {
|
||
|
|
r.Response.WriteStatusExit(200)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
r.Middleware.Next()
|
||
|
|
})
|
||
|
|
// ... existing code ...
|
||
|
|
|
||
|
|
// 注册 API 路由组
|
||
|
|
s.Group("/api", func(group *ghttp.RouterGroup) {
|
||
|
|
group.Middleware(ghttp.MiddlewareHandlerResponse)
|
||
|
|
controller.RegisterControllers(group)
|
||
|
|
})
|
||
|
|
|
||
|
|
// 注册 WebSocket 聊天室路由(不在 /api 组下,因为 WebSocket 不需要中间件)
|
||
|
|
s.BindHandler("/ws/chat", websocket.HandleChatConnections)
|
||
|
|
|
||
|
|
// 配置静态文件服务(用于提供 HTML 客户端页面)
|
||
|
|
s.SetServerRoot("resource/public")
|
||
|
|
|
||
|
|
s.Run()
|
||
|
|
return nil
|
||
|
|
},
|
||
|
|
}
|
||
|
|
)
|