From 08d97b3f89269db5814672960282dff990342bdd Mon Sep 17 00:00:00 2001 From: tolelom <98kimsungmin@naver.com> Date: Wed, 25 Mar 2026 22:30:24 +0900 Subject: [PATCH] fix: use binary WebSocket frames for SSH PTY output SSH PTY output contains non-UTF-8 bytes (terminal escape sequences). Sending as TextMessage caused WebSocket decode errors. Switch to BinaryMessage and handle arraybuffer on the client side. Co-Authored-By: Claude Opus 4.6 (1M context) --- web/server.go | 2 +- web/static/index.html | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/web/server.go b/web/server.go index 7a77ddd..89cff02 100644 --- a/web/server.go +++ b/web/server.go @@ -131,7 +131,7 @@ func handleWS(w http.ResponseWriter, r *http.Request, sshPort int) { for { n, err := stdout.Read(buf) if n > 0 { - if writeErr := ws.WriteMessage(websocket.TextMessage, buf[:n]); writeErr != nil { + if writeErr := ws.WriteMessage(websocket.BinaryMessage, buf[:n]); writeErr != nil { return } } diff --git a/web/static/index.html b/web/static/index.html index 5b3796b..a8dbe28 100644 --- a/web/static/index.html +++ b/web/static/index.html @@ -72,8 +72,9 @@ sendResize(); }; + ws.binaryType = 'arraybuffer'; ws.onmessage = (e) => { - term.write(e.data); + term.write(new Uint8Array(e.data)); }; ws.onclose = () => {