70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package v1
|
|
|
|
import (
|
|
json2 "encoding/json"
|
|
"github.com/IceWhaleTech/CasaOS/model"
|
|
"github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err"
|
|
"github.com/IceWhaleTech/CasaOS/service"
|
|
"github.com/IceWhaleTech/CasaOS/types"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gorilla/websocket"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
var upGrader = websocket.Upgrader{
|
|
CheckOrigin: func(r *http.Request) bool {
|
|
return true
|
|
},
|
|
}
|
|
|
|
// @Summary websocket 接口,连接成功后发送一个"notify"字符串
|
|
// @Produce application/json
|
|
// @Accept application/json
|
|
// @Tags notify
|
|
// @Security ApiKeyAuth
|
|
// @Param token path string true "token"
|
|
// @Success 200 {string} string "ok"
|
|
// @Router /notify/ws [get]
|
|
func NotifyWS(c *gin.Context) {
|
|
//升级get请求为webSocket协议
|
|
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer ws.Close()
|
|
for {
|
|
mt, message, err := ws.ReadMessage()
|
|
if err != nil {
|
|
break
|
|
}
|
|
if string(message) != "notify" {
|
|
return
|
|
}
|
|
for {
|
|
list := service.MyService.Notify().GetList()
|
|
json, _ := json2.Marshal(list)
|
|
err = ws.WriteMessage(mt, json)
|
|
if err != nil {
|
|
break
|
|
}
|
|
time.Sleep(time.Second * 2)
|
|
}
|
|
}
|
|
}
|
|
|
|
// @Summary 标记notify已读
|
|
// @Produce application/json
|
|
// @Accept application/json
|
|
// @Tags notify
|
|
// @Security ApiKeyAuth
|
|
// @Success 200 {string} string "ok"
|
|
// @Router /notify/read/{id} [put]
|
|
func PutNotifyRead(c *gin.Context) {
|
|
id := c.Param("id")
|
|
if len(id) == 0 {
|
|
c.JSON(http.StatusOK, model.Result{Success: oasis_err.INVALID_PARAMS, Message: oasis_err.GetMsg(oasis_err.INVALID_PARAMS)})
|
|
return
|
|
}
|
|
service.MyService.Notify().MarkRead(id, types.NOTIFY_READ)
|
|
}
|