109 lines
2.0 KiB
Go
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()
|
|
}
|