52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package logic
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fusenapi/server/websocket/internal/types"
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
)
|
|
|
|
// 渲染请求数据处理发送云渲染服务处理
|
|
func (w *wsConnectItem) SendToCloudRender(data []byte) {
|
|
var renderImageData []types.RenderImageReqMsg
|
|
if err := json.Unmarshal(data, &renderImageData); err != nil {
|
|
logx.Error("invalid format of websocket render image message", err)
|
|
return
|
|
}
|
|
logx.Info("收到请求云渲染图片数据:", renderImageData)
|
|
//把需要渲染的图片任务加进去
|
|
for _, v := range renderImageData {
|
|
select {
|
|
case <-w.closeChan: //连接关闭了
|
|
return
|
|
default:
|
|
//加入渲染任务
|
|
key := w.getRenderImageMapKey(v.ProductId, v.SizeId, v.TemplateId)
|
|
w.renderImageTaskCtlChan <- renderImageControlChanItem{
|
|
Option: 1,
|
|
Key: key,
|
|
}
|
|
// TODO 数据发送给云渲染服务器
|
|
}
|
|
}
|
|
}
|
|
|
|
// 操作连接中渲染任务的增加/删除
|
|
func (w *wsConnectItem) operationRenderTask() {
|
|
for {
|
|
select {
|
|
case <-w.closeChan:
|
|
return
|
|
case data := <-w.renderImageTaskCtlChan:
|
|
switch data.Option {
|
|
case 0: //删除任务
|
|
delete(w.renderImageTask, data.Key)
|
|
case 1: //新增任务
|
|
w.renderImageTask[data.Key] = struct{}{}
|
|
default:
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|