diff --git a/server/websocket/internal/logic/datatransferlogic.go b/server/websocket/internal/logic/datatransferlogic.go index 4d2ae3c3..f4e057fb 100644 --- a/server/websocket/internal/logic/datatransferlogic.go +++ b/server/websocket/internal/logic/datatransferlogic.go @@ -70,7 +70,15 @@ var ( //用户标识的连接(白板用户不存) mapUserConnPool = make(map[string]map[string]struct{}) //key是user_id +"_"+guest_id (val是个普通map,存储这个用户的所有连接标识) //用户标识的连接增删操作队列 - userConnPoolCtlChan = make(chan userConnPoolCtlChanItem, getCacheChanLenByLevel(4)) + userConnPoolCtlChan = make(chan userConnPoolCtlChanItem, 500) + //每个websocket连接入口缓冲队列长度默认值 + websocketInChanLen = 500 + //每个websocket连接出口缓冲队列长度默认值 + websocketOutChanLen = 500 + //每个websocket连接渲染任务调度队列长度默认值(添加任务/删除任务/修改任务属性)缓冲队列长度(该队列用于避免map并发读写冲突) + renderImageTaskCtlChanLen = 100 + //每个websocket渲染任务缓冲队列长度默认值 + renderChanLen = 500 //是否开启debug openDebug = true //允许跨域的origin @@ -180,8 +188,6 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use l.sendGetUniqueIdErrResponse(conn) return wsConnectItem{}, err } - //根据不同用户获取不同缓冲队列长度 - websocketInChanLen, websocketOutChanLen, renderImageTaskCtlChanLen, renderChanLen := getCacheChanLenByUser(userInfo.UserId, userInfo.GuestId) ws := wsConnectItem{ conn: conn, userAgent: userAgent, @@ -213,35 +219,6 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use return ws, nil } -// 根据level获取缓冲队列长度 -func getCacheChanLenByLevel(level int) int { - switch level { - case 1: - return 10 - case 2: - return 100 - case 3: - return 500 - case 4: - return 1000 - default: - return 10 - } -} - -// 根据用户获取缓冲队列长度 -func getCacheChanLenByUser(userId, guestId int64) (websocketInChanLen, websocketOutChanLen, renderImageTaskCtlChanLen, renderChanLen int) { - var l int - if userId > 0 { - l = getCacheChanLenByLevel(3) - } else if guestId > 0 { - l = getCacheChanLenByLevel(2) - } else { - l = getCacheChanLenByLevel(2) - } - return l, l, l, l -} - // 添加用户索引池ws连接 func createUserConnPoolElement(userId, guestId int64, uniqueId string) { data := userConnPoolCtlChanItem{