Files
go_blog/main.go
2024-01-22 17:55:16 +08:00

109 lines
2.0 KiB
Go

package main
import (
"flag"
"fmt"
"go_blog/conf"
"go_blog/handlers"
"go_blog/models"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
)
type UserInfo struct {
Name string
Gender string
Age int
Password string
}
var host string
var port string
var isDebugMode bool
var isErrMsg bool
var isOrmDebug bool
func init() {
flag.StringVar(&host, "h", "127.0.0.1", "主机")
flag.StringVar(&port, "p", "", "监听端口")
flag.BoolVar(&isDebugMode, "debug", true, "是否开启debug")
flag.BoolVar(&isErrMsg, "err", true, "是否返回错误信息")
flag.BoolVar(&isOrmDebug, "orm", true, "是否开启gorm的debug信息")
flag.Parse()
conf.SetUp()
models.SetUp(isOrmDebug)
}
func main() {
r := gin.Default()
r.LoadHTMLGlob("templates/*")
r.GET("/", func(c *gin.Context) {
c.HTML(200, "index.tmpl", nil)
})
user := UserInfo{
Name: "user",
Gender: "male",
Age: 18,
Password: "nothings",
}
r.GET("/page/:id", func(c *gin.Context) {
id := c.Param("id")
c.HTML(200, "page"+id+".tmpl", map[string]interface{}{
"title": "这个是titile,传入templates中的",
"user": user,
})
})
r.GET("/login", func(c *gin.Context) {
c.HTML(200, "login.tmpl", map[string]interface{}{
"title": "这个是titile,传入templates中的",
"user": user,
})
})
// 注册WebSocket路由
r.GET("/ws", WebSocketHandler)
r.POST("/login", handlers.UsersLoginHandler)
r.Run(":8080")
}
func WebSocketHandler(c *gin.Context) {
// 获取WebSocket连接
//ws, err := websocket.Upgrader.Upgrade(c.Writer, c.Request, nil)
var upGrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
panic(err)
}
// 处理WebSocket消息
for {
messageType, p, err := ws.ReadMessage()
if err != nil {
break
}
fmt.Println("messageType:", messageType)
fmt.Println("p:", string(p))
// 输出WebSocket消息内容
c.Writer.Write(p)
}
// 关闭WebSocket连接
ws.Close()
}