This commit is contained in:
laodaming 2023-09-27 18:35:20 +08:00
parent fbeebabf27
commit 06ab4a596f
2 changed files with 20 additions and 2 deletions

View File

@ -179,6 +179,7 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use
l.sendGetUniqueIdErrResponse(conn) l.sendGetUniqueIdErrResponse(conn)
return wsConnectItem{}, err return wsConnectItem{}, err
} }
renderCtx, renderCtxCancelFunc := context.WithCancel(l.ctx)
ws := wsConnectItem{ ws := wsConnectItem{
conn: conn, conn: conn,
userAgent: userAgent, userAgent: userAgent,
@ -192,7 +193,9 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use
userId: userInfo.UserId, userId: userInfo.UserId,
guestId: userInfo.GuestId, guestId: userInfo.GuestId,
extendRenderProperty: extendRenderProperty{ extendRenderProperty: extendRenderProperty{
renderChan: make(chan websocket_data.RenderImageReqMsg, renderChanLen), renderChan: make(chan websocket_data.RenderImageReqMsg, renderChanLen),
renderCtx: renderCtx,
renderCtxCancelFunc: renderCtxCancelFunc,
}, },
} }
//保存连接 //保存连接

View File

@ -3,6 +3,7 @@ package logic
//处理websocket云渲染任务数据 //处理websocket云渲染任务数据
import ( import (
"bytes" "bytes"
"context"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
@ -32,7 +33,11 @@ type renderProcessor struct {
// 云渲染属性 // 云渲染属性
type extendRenderProperty struct { type extendRenderProperty struct {
renderChan chan websocket_data.RenderImageReqMsg //渲染消息入口的缓冲队列 renderChan chan websocket_data.RenderImageReqMsg //渲染消息入口的缓冲队列
renderCtx context.Context //渲染控制上下文(用于切换模板标签/颜色取消之前发送的不相同的任务)
renderCtxCancelFunc context.CancelFunc //渲染控制上下文取消方法
selectColorIndex int //选择的颜色索引
templateTag string //模板标签
} }
// 处理分发到这里的数据 // 处理分发到这里的数据
@ -44,6 +49,16 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) {
logx.Error("invalid format of websocket render image message", err) logx.Error("invalid format of websocket render image message", err)
return return
} }
if renderImageData.RenderData.TemplateTag != w.extendRenderProperty.templateTag || renderImageData.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex {
//赋值
w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag
w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex
//让之前的失效
w.extendRenderProperty.renderCtxCancelFunc()
logx.Info("模板标签/颜色更换上下文取消")
//重新赋值
w.extendRenderProperty.renderCtx, w.extendRenderProperty.renderCtxCancelFunc = context.WithCancel(w.logic.ctx)
}
select { select {
case <-w.closeChan: //已经关闭 case <-w.closeChan: //已经关闭
return return