123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package controller
- import (
- "github.com/gin-gonic/gin"
- "github.com/gorilla/websocket"
- "message-pusher/channel"
- "message-pusher/model"
- "net/http"
- )
- var upgrader = websocket.Upgrader{
- ReadBufferSize: 1024,
- WriteBufferSize: 1024,
- CheckOrigin: func(r *http.Request) bool {
- return true
- },
- }
- func RegisterClient(c *gin.Context) {
- secret := c.Query("secret")
- if secret == "" {
- c.JSON(http.StatusOK, gin.H{
- "success": false,
- "message": "secret 为空",
- })
- return
- }
- user := model.User{Username: c.Param("username")}
- err := user.FillUserByUsername()
- if err != nil {
- c.JSON(http.StatusOK, gin.H{
- "success": false,
- "message": "无效的用户名",
- })
- return
- }
- channelName := c.Query("channel")
- if channelName == "" {
- channelName = "client"
- }
- channel_, err := model.GetChannelByName(channelName, user.Id)
- if err != nil {
- c.JSON(http.StatusOK, gin.H{
- "success": false,
- "message": "无效的通道名称",
- })
- return
- }
- if secret != channel_.Secret {
- c.JSON(http.StatusOK, gin.H{
- "success": false,
- "message": "通道名称与密钥不匹配",
- })
- return
- }
- conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
- if err != nil {
- c.JSON(http.StatusOK, gin.H{
- "success": false,
- "message": err.Error(),
- })
- return
- }
- channel.RegisterClient(channelName, user.Id, conn)
- return
- }
|