Files

85 lines
2.0 KiB
Go
Raw Normal View History

2022-01-27 14:50:52 +08:00
package api
import (
"SciencesServer/app/basic/entity"
"SciencesServer/app/logic"
"SciencesServer/app/service"
"SciencesServer/config"
"SciencesServer/serve/logger"
"SciencesServer/utils"
"fmt"
"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(key string, session logic.ISession) func(ctx *gin.Context) {
return func(c *gin.Context) {
conn, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
logger.ErrorF("Conn错误【%s】", err)
return
}
token := c.Query(config.APIRequestToken)
resp := &entity.Message{
Message: "Success",
}
if token == "" {
resp.Code = -1
resp.Message = "Token异常无权限链接"
_ = conn.WriteMessage(websocket.TextMessage, utils.AnyToByte(&service.Message{
Prefix: resp.Prefix(),
INotice: resp,
}))
return
}
if err = service.NewAuthToken(token).Auth(key, session); err != nil {
resp.Code = -1
resp.Message = err.Error()
_ = conn.WriteMessage(websocket.TextMessage, utils.AnyToByte(&service.Message{
Prefix: resp.Prefix(),
INotice: resp,
}))
return
}
client := service.NewWebsocket(session.GetStringUID(), conn)
service.HubMessage.RegisterHandle(client)
// 连接成功通知
_ = conn.WriteMessage(websocket.TextMessage, utils.AnyToByte(&service.Message{
Prefix: resp.Prefix(),
INotice: resp,
}))
go client.Write()
}
}
func (*Websocket) Publish(c *gin.Context) {
//key := c.Query("key")
fmt.Println(1232132132132132131)
service.HubMessage.BroadcastHandle(&entity.Message{
Code: 0,
Message: "你有一条新的待办事项",
})
//service.HubMessage.EmitHandle(&service.HubEmit{
// ID: "2118935188548358144",
// Msg: &entity.Message{
// Code: 0,
// Message: "你有一条新的待办事项",
// },
//})
APISuccess()(c)
}