This commit is contained in:
laodaming 2023-09-07 12:23:04 +08:00
parent f64b6e8a43
commit 7075dfb223

View File

@ -70,7 +70,15 @@ var (
//用户标识的连接(白板用户不存) //用户标识的连接(白板用户不存)
mapUserConnPool = make(map[string]map[string]struct{}) //key是user_id +"_"+guest_id val是个普通map存储这个用户的所有连接标识 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 //是否开启debug
openDebug = true openDebug = true
//允许跨域的origin //允许跨域的origin
@ -180,8 +188,6 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use
l.sendGetUniqueIdErrResponse(conn) l.sendGetUniqueIdErrResponse(conn)
return wsConnectItem{}, err return wsConnectItem{}, err
} }
//根据不同用户获取不同缓冲队列长度
websocketInChanLen, websocketOutChanLen, renderImageTaskCtlChanLen, renderChanLen := getCacheChanLenByUser(userInfo.UserId, userInfo.GuestId)
ws := wsConnectItem{ ws := wsConnectItem{
conn: conn, conn: conn,
userAgent: userAgent, userAgent: userAgent,
@ -213,35 +219,6 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo *auth.Use
return ws, nil 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连接 // 添加用户索引池ws连接
func createUserConnPoolElement(userId, guestId int64, uniqueId string) { func createUserConnPoolElement(userId, guestId int64, uniqueId string) {
data := userConnPoolCtlChanItem{ data := userConnPoolCtlChanItem{