This commit is contained in:
laodaming 2023-11-23 11:12:37 +08:00
parent 53e20dfd63
commit e813ec5575
2 changed files with 14 additions and 23 deletions
server/websocket/internal/logic
utils/websocket_data

View File

@ -37,7 +37,6 @@ type extendRenderProperty struct {
renderCtx context.Context //渲染控制上下文(用于切换模板标签/颜色/logo取消之前发送的不相同的任务 renderCtx context.Context //渲染控制上下文(用于切换模板标签/颜色/logo取消之前发送的不相同的任务
renderCtxCancelFunc context.CancelFunc //渲染控制上下文取消方法 renderCtxCancelFunc context.CancelFunc //渲染控制上下文取消方法
selectColorIndex int //选择的颜色索引(用于标记连接当前连接选择的颜色) selectColorIndex int //选择的颜色索引(用于标记连接当前连接选择的颜色)
templateTag string //模板标签 (用于标记连接当前连接选择的模板标签)
Logo string //logo地址 用于标记连接当前连接选择的logo Logo string //logo地址 用于标记连接当前连接选择的logo
} }
@ -52,9 +51,6 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) {
} }
//颜色/模板标签/logo变更 //颜色/模板标签/logo变更
ifCancelOldCtx := false ifCancelOldCtx := false
if renderImageData.RenderData.TemplateTag != w.extendRenderProperty.templateTag {
ifCancelOldCtx = true
}
if renderImageData.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex { if renderImageData.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex {
ifCancelOldCtx = true ifCancelOldCtx = true
} }
@ -63,7 +59,6 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) {
} }
if ifCancelOldCtx { if ifCancelOldCtx {
//赋值新的 //赋值新的
w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag
w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex
w.extendRenderProperty.Logo = renderImageData.RenderData.Logo w.extendRenderProperty.Logo = renderImageData.RenderData.Logo
//让之前的失效 //让之前的失效
@ -115,23 +110,20 @@ func (w *wsConnectItem) consumeRenderImageData() {
defer func() { defer func() {
<-limitChan <-limitChan
}() }()
//如果不是无视上下文切换取消的(后面再开启) go func() {
/*if !d.IgnoreContextCancel { defer func() {
go func() { if err := recover(); err != nil {
defer func() { logx.Error("func renderImage panic:", err)
if err := recover(); err != nil {
logx.Error("func renderImage panic:", err)
}
}()
select {
case <-w.extendRenderProperty.renderCtx.Done():
//抛出取消渲染异常
cancelRenderPanic()
case <-tmpChan:
return
} }
}() }()
}*/ select {
case <-w.extendRenderProperty.renderCtx.Done():
//抛出取消渲染异常
cancelRenderPanic()
case <-tmpChan:
return
}
}()
w.renderImage(d) w.renderImage(d)
}(data) }(data)
} }

View File

@ -2,9 +2,8 @@ package websocket_data
// websocket接受要云渲染处理的数据 // websocket接受要云渲染处理的数据
type RenderImageReqMsg struct { type RenderImageReqMsg struct {
RequestId string `json:"request_id"` RequestId string `json:"request_id"`
IgnoreContextCancel bool `json:"ignore_context_cancel"` //是否无视切换上下文取消正在执行的渲染任务 RenderData RenderData `json:"render_data"` //渲染主要参数
RenderData RenderData `json:"render_data"` //渲染主要参数
} }
type RenderData struct { type RenderData struct {
TemplateTag string `json:"template_tag"` //模板标签(必须) TemplateTag string `json:"template_tag"` //模板标签(必须)