Files
ArmedPolice/app/api/websocket.go
2021-11-08 15:52:46 +08:00

59 lines
1.2 KiB
Go

package api
import (
"ArmedPolice/app/handle"
"ArmedPolice/app/service"
"ArmedPolice/config"
"errors"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"net/http"
)
type Websocket struct{}
var upGrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func (*Websocket) Ws(c *gin.Context) {
conn, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
APIFailure(err)(c)
return
}
token := c.Query(config.APIRequestToken)
if token == "" {
APIFailure(errors.New("Token异常"))(c)
return
}
session := new(service.Session)
if session, err = service.NewAuthToken(token).Auth(); err != nil {
APIFailure(err)(c)
return
}
client := service.NewWebsocket(session.UIDToString(), conn)
service.HubMessage.RegisterHandle(client)
go client.Write()
}
func (*Websocket) Pong(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "ping"})
}
func (*Websocket) Publish(c *gin.Context) {
key := c.Query("key")
service.HubMessage.EmitHandle(&service.HubEmit{
ID: key,
Msg: handle.NewWorkNotice("你有一条待办事项"),
})
APISuccess()(c)
}