fix(shell): Web 终端 resize 失效修复——前端 resize 消息 Data 字段反序列化为 map[string]interface{}, 对 ResizeDataType 的直接类型断言恒失败被静默吞掉, PTY 固定 180x30 与窗口脱节; 改为二次 marshal+unmarshal 解码行列并校验正值后 SetSize

This commit is contained in:
w11
2026-09-25 10:09:39 +08:00
parent 52593ddd7e
commit 16e6037dba
+7 -10
View File
@@ -176,17 +176,14 @@ func getWebShell(recDir string) gin.HandlerFunc {
} }
} else if opData.Op == "resize" { } else if opData.Op == "resize" {
fmt.Println("resize") // Data 反序列化后是 map[string]interface{}, 不能直接断言 ResizeDataType
value, ok := opData.Data.(ResizeDataType) // (此前断言恒失败, 前端 resize 被静默吞掉, PTY 固定 180x30)
if ok { raw, merr := json.Marshal(opData.Data)
err = proc.SetSize(value.Cols, value.Rows) var size ResizeDataType
if err != nil { if merr == nil && json.Unmarshal(raw, &size) == nil && size.Cols > 0 && size.Rows > 0 {
logrus.Errorf("重置大小错误 %d bytes", n) if serr := proc.SetSize(size.Cols, size.Rows); serr != nil {
} else { logrus.Errorf("重置大小错误: %s", serr.Error())
fmt.Println("重置大小成功")
} }
} else {
} }
} }