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