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" {
fmt.Println("resize")
value, ok := opData.Data.(ResizeDataType)
if ok {
err = proc.SetSize(value.Cols, value.Rows)
if err != nil {
logrus.Errorf("重置大小错误 %d bytes", n)
} else {
fmt.Println("重置大小成功")
// Data 反序列化后是 map[string]interface{}, 不能直接断言 ResizeDataType
// (此前断言恒失败, 前端 resize 被静默吞掉, PTY 固定 180x30)
raw, merr := json.Marshal(opData.Data)
var size ResizeDataType
if merr == nil && json.Unmarshal(raw, &size) == nil && size.Cols > 0 && size.Rows > 0 {
if serr := proc.SetSize(size.Cols, size.Rows); serr != nil {
logrus.Errorf("重置大小错误: %s", serr.Error())
}
} else {
}
}