feat:完善信息,增加socket
This commit is contained in:
84
app/basic/api/websocket.go
Normal file
84
app/basic/api/websocket.go
Normal file
@ -0,0 +1,84 @@
|
||||
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)
|
||||
}
|
Reference in New Issue
Block a user