This commit is contained in:
laodaming 2023-09-08 16:57:32 +08:00
parent b7882ef06f
commit 62256cdde9
2 changed files with 5 additions and 3 deletions

View File

@ -195,6 +195,7 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use
renderImageTask: make(map[string]*renderTask), renderImageTask: make(map[string]*renderTask),
renderImageTaskCtlChan: make(chan renderImageControlChanItem, renderImageTaskCtlChanLen), renderImageTaskCtlChan: make(chan renderImageControlChanItem, renderImageTaskCtlChanLen),
renderChan: make(chan []byte, renderChanLen), renderChan: make(chan []byte, renderChanLen),
renderConsumeTickTime: 1, //默认1纳秒后面需要根据不同用户不同触发速度
}, },
} }
//保存连接 //保存连接

View File

@ -35,6 +35,7 @@ type extendRenderProperty struct {
renderImageTask map[string]*renderTask //需要渲染的图片任务 key是taskId val 是renderId renderImageTask map[string]*renderTask //需要渲染的图片任务 key是taskId val 是renderId
renderImageTaskCtlChan chan renderImageControlChanItem //渲染任务新增/回调结果移除任务/更新渲染耗时属性的控制通道由于任务map无法读写并发 renderImageTaskCtlChan chan renderImageControlChanItem //渲染任务新增/回调结果移除任务/更新渲染耗时属性的控制通道由于任务map无法读写并发
renderChan chan []byte //渲染消息入口的缓冲队列 renderChan chan []byte //渲染消息入口的缓冲队列
renderConsumeTickTime time.Duration //消费渲染消息时钟间隔(纳秒),用于后期控制不同类型用户渲染速度限制
} }
// 渲染任务新增移除的控制通道的数据 // 渲染任务新增移除的控制通道的数据
@ -74,15 +75,15 @@ func (w *wsConnectItem) consumeRenderImageData() {
logx.Error("func renderImage err:", err) logx.Error("func renderImage err:", err)
} }
}() }()
tick := time.Tick(w.extendRenderProperty.renderConsumeTickTime)
for { for {
select { select {
case <-w.closeChan: //已关闭 case <-w.closeChan: //已关闭
return return
case data := <-w.extendRenderProperty.renderChan: case <-tick: //消费数据
w.renderImage(data) w.renderImage(<-w.extendRenderProperty.renderChan)
} }
} }
} }
// 执行渲染任务 // 执行渲染任务