From 191bb109e07e13eeae65c85f5a22c4f9bc8b0e7e Mon Sep 17 00:00:00 2001 From: Sheng Date: Tue, 22 May 2018 19:28:04 +0800 Subject: [PATCH] Fixed a bug that client closes websocket on handling non utf-8 encoded bytes --- webssh/static/js/main.js | 10 ++++++++-- webssh/worker.py | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/webssh/static/js/main.js b/webssh/static/js/main.js index bebcc64..19fbfa1 100644 --- a/webssh/static/js/main.js +++ b/webssh/static/js/main.js @@ -91,8 +91,14 @@ jQuery(function($){ }; socket.onmessage = function(msg) { - // console.log(msg); - term.write(msg.data); + var reader = new FileReader(); + reader.onloadend = function(event){ + var decoder = new TextDecoder(); + var text = decoder.decode(reader.result); + // console.log(text); + term.write(text); + }; + reader.readAsArrayBuffer(msg.data); }; socket.onerror = function(e) { diff --git a/webssh/worker.py b/webssh/worker.py index ee0ad45..e7f160d 100644 --- a/webssh/worker.py +++ b/webssh/worker.py @@ -63,7 +63,7 @@ class Worker(object): logging.debug('{!r} to {}:{}'.format(data, *self.handler.src_addr)) try: - self.handler.write_message(data) + self.handler.write_message(data, binary=True) except tornado.websocket.WebSocketClosedError: self.close(reason='websocket closed')