Files
SamWaf/waftask/task_delay_msg.go

54 lines
1.4 KiB
Go

package waftask
import (
"SamWaf/common/uuid"
"SamWaf/common/wsmsg"
"SamWaf/common/zlog"
"SamWaf/global"
"SamWaf/model"
"SamWaf/service/waf_service"
"time"
"github.com/gorilla/websocket"
)
// TaskDelayInfo 定时发送延迟信息
func TaskDelayInfo() {
zlog.Debug("TaskDelayInfo")
models, count, err := waf_service.WafDelayMsgServiceApp.GetAllList()
if err == nil {
if count > 0 {
for i := 0; i < len(models); i++ {
msg := models[i]
cmdType := "Info"
if msg.DelayType == "升级结果" {
cmdType = "RELOAD_PAGE"
}
dataPacket := model.MsgDataPacket{
MessageId: uuid.GenUUID(),
MessageType: msg.DelayType,
MessageData: msg.DelayContent,
MessageAttach: nil,
MessageDateTime: time.Now().Format("2006-01-02 15:04:05"),
MessageUnReadStatus: true,
}
//发送websocket:走会话管理器统一出口,内部按连接加锁 + 写超时;
//报文按连接各自的会话密钥组装(v2 连接一份,旧连接回落 legacy)
sendSuccess := global.GWebSocket.BroadcastBuild(websocket.TextMessage, func(keyID string) ([]byte, error) {
msgBytes, err := wsmsg.Build(keyID, dataPacket, cmdType)
if err != nil {
zlog.Debug("组装延迟消息报文错误", err)
}
return msgBytes, err
})
if sendSuccess > 0 {
waf_service.WafDelayMsgServiceApp.DelApi(msg.Id)
}
}
}
}
}