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)
|
|||
|
}
|