59 lines
1.2 KiB
Go
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)
|
|
}
|