-
Notifications
You must be signed in to change notification settings - Fork 3
/
main.go
98 lines (86 loc) · 2.93 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package main
import (
"github.com/gin-gonic/gin"
_ "github.com/richelieu-yang/chimera/v2/internal/pushDemo/docs"
"github.com/richelieu-yang/chimera/v2/internal/pushDemo/handler"
"github.com/richelieu-yang/chimera/v2/internal/pushDemo/types"
"github.com/richelieu-yang/chimera/v2/src/component/web/ginKit"
"github.com/richelieu-yang/chimera/v2/src/component/web/push/pushKit"
"github.com/richelieu-yang/chimera/v2/src/component/web/push/sseKit"
"github.com/richelieu-yang/chimera/v2/src/component/web/push/wsKit"
"github.com/richelieu-yang/chimera/v2/src/goroutine/poolKit"
"github.com/richelieu-yang/chimera/v2/src/json/jsonRespKit"
"github.com/richelieu-yang/chimera/v2/src/log/logrusKit"
"github.com/sirupsen/logrus"
"github.com/swaggo/files"
"github.com/swaggo/gin-swagger"
)
// @title Title
// @version 1.0
// @description Description.
// @query.collection.format multi
func main() {
logrusKit.MustSetUp(nil)
jsonRespKit.MustSetUp(func(code, msg string, data interface{}) interface{} {
return &types.JsonResponse{
Code: code,
Message: msg,
Data: data,
}
})
pool, err := poolKit.NewPool(2000)
if err != nil {
logrus.Fatal(err)
}
pushKit.MustSetUp(pool)
engine := gin.Default()
engine.Use(ginKit.NewCorsMiddleware(nil))
// push
{
engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
engine.POST("/push_to_all", ginKit.WrapToHandlerFunc(handler.PushToAll))
engine.POST("/push_to_bsid", ginKit.WrapToHandlerFunc(handler.PushToBsid))
engine.POST("/push_to_user", ginKit.WrapToHandlerFunc(handler.PushToUser))
engine.POST("/push_to_group", ginKit.WrapToHandlerFunc(handler.PushToGroup))
}
// close
{
engine.POST("/close_by_id", ginKit.WrapToHandlerFunc(handler.CloseById))
engine.POST("/close_by_bsid", ginKit.WrapToHandlerFunc(handler.CloseByBsid))
engine.POST("/close_all", ginKit.WrapToHandlerFunc(handler.CloseAll))
engine.POST("/close_by_user", ginKit.WrapToHandlerFunc(handler.CloseByUser))
engine.POST("/close_by_group", ginKit.WrapToHandlerFunc(handler.CloseByGroup))
}
// WebSocket
{
processor, err := wsKit.NewProcessor(nil, nil, &types.DemoListener{}, wsKit.MessageTypeText)
if err != nil {
logrus.Fatal(err)
}
engine.GET("/ws", processor.ProcessWithGin)
}
// SSE
{
processor, err := sseKit.NewProcessor(nil, &types.DemoListener{}, sseKit.MessageTypeRaw)
if err != nil {
logrus.Fatal(err)
}
engine.GET("/sse", processor.ProcessWithGin)
}
// html
{
// 传参路径root 是相对于项目的根目录(working directory),而非main()所在的目录(虽然他们常常是同一个)
// "./internal/pushDemo/web" <=> "internal/pushDemo/web"
root := "internal/pushDemo/web"
if err := ginKit.StaticDir(engine, "/s", root, false); err != nil {
logrus.Fatal(err)
}
}
ginKit.DefaultFavicon(engine)
if err := ginKit.DefaultNoRoute(engine); err != nil {
logrus.Fatal(err)
}
if err := engine.Run(":80"); err != nil {
logrus.Fatal(err)
}
}