Merge pull request '添加计时器,麦克风,摄像头开关' (#45) from develop-frontend8 into develop 33分钟前 #46
@@ -220,7 +220,7 @@ func serveWS(c *gin.Context, sessionMgr session.Manager, orch orchestrator.Orche
|
||||
DetailLevel: msg.Payload.DetailLevel,
|
||||
Language: msg.Payload.Language,
|
||||
}
|
||||
if err := sessionMgr.UpdateConfig(context.Background(), sessionID, patch); err != nil {
|
||||
if err := client.sessionMgr.UpdateConfig(context.Background(), sessionID, patch); err != nil {
|
||||
errors.SendWSError(client, errors.CodeInternalError, "", err)
|
||||
continue
|
||||
}
|
||||
@@ -229,11 +229,16 @@ func serveWS(c *gin.Context, sessionMgr session.Manager, orch orchestrator.Orche
|
||||
case "interrupt":
|
||||
logger.Log.Infow("interrupt received", "session", sessionID)
|
||||
|
||||
// 获取活跃请求 ID(实际 cancel 在 Phase 5 接入 orchestrator 后实现)
|
||||
reqID, _ := sessionMgr.GetActiveRequestID(context.Background(), sessionID)
|
||||
// 获取活跃请求 ID 并取消
|
||||
reqID, _ := client.sessionMgr.GetActiveRequestID(context.Background(), sessionID)
|
||||
if reqID != "" {
|
||||
_ = sessionMgr.ClearActiveRequest(context.Background(), sessionID)
|
||||
// TODO: 取消对应 context cancel func
|
||||
client.mu.Lock()
|
||||
if cancel, ok := client.cancelFuncs[reqID]; ok {
|
||||
cancel()
|
||||
delete(client.cancelFuncs, reqID)
|
||||
}
|
||||
client.mu.Unlock()
|
||||
_ = client.sessionMgr.ClearActiveRequest(context.Background(), sessionID)
|
||||
}
|
||||
|
||||
default:
|
||||
@@ -247,6 +252,15 @@ func serveWS(c *gin.Context, sessionMgr session.Manager, orch orchestrator.Orche
|
||||
|
||||
close(done)
|
||||
|
||||
// 取消所有活跃请求
|
||||
client.mu.Lock()
|
||||
for reqID, cancel := range client.cancelFuncs {
|
||||
logger.Log.Infow("canceling active request on disconnect", "session", sessionID, "request", reqID)
|
||||
cancel()
|
||||
}
|
||||
client.cancelFuncs = make(map[string]context.CancelFunc)
|
||||
client.mu.Unlock()
|
||||
|
||||
// 断开连接时不销毁会话,让其自然过期(支持重连恢复)
|
||||
logger.Log.Infow("client disconnected", "session", sessionID)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user