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