commit 4c3120e5adceced3c52e6ec14f5c0a56884fcbff
parent 24a619ae6b3bf6bd56c4ca6247686e34fed1e8bb
Author: Sheng <webmaster0115@gmail.com>
Date: Thu, 23 Aug 2018 17:57:35 +0800
Reuse decoder
Diffstat:
1 file changed, 23 insertions(+), 26 deletions(-)
diff --git a/webssh/static/js/main.js b/webssh/static/js/main.js
@@ -96,23 +96,42 @@ jQuery(function($){
join = (ws_url[ws_url.length-1] === '/' ? '' : '/'),
url = ws_url + join + 'ws?id=' + msg.id,
sock = new window.WebSocket(url),
- encoding = msg.encoding,
+ encoding, decoder,
terminal = document.getElementById('#terminal'),
term = new window.Terminal({
cursorBlink: true,
});
console.log(url);
- console.log('The deault encoding of your server is ' + encoding);
+ console.log('The deault encoding of your server is ' + msg.encoding);
// wssh.sock = sock;
// wssh.term = term;
- var test_decoder;
function resize_terminal (term) {
var geometry = current_geometry();
term.on_resize(geometry.cols, geometry.rows);
}
+ function set_encoding (new_encoding) {
+ // for console use
+ if (new_encoding === undefined) {
+ console.log('An encoding is required');
+ return;
+ }
+
+ try {
+ decoder = new window.TextDecoder(new_encoding);
+ encoding = new_encoding;
+ console.log('Set encoding to ' + encoding);
+ } catch(TypeError) {
+ console.log('Unknown encoding ' + new_encoding);
+ }
+ }
+
+ wssh.set_encoding = set_encoding;
+ set_encoding(msg.encoding);
+
+
wssh.window_geometry = function() {
// for console use
var geometry = current_geometry();
@@ -139,33 +158,12 @@ jQuery(function($){
}
};
- wssh.set_encoding = function (new_encoding) {
- // for console use
- if (new_encoding === undefined) {
- console.log('An encoding is required');
- return;
- }
-
- try {
- test_decoder = new window.TextDecoder(new_encoding);
- } catch(TypeError) {
- console.log('Unknown encoding ' + new_encoding);
- } finally {
- if (test_decoder !== undefined) {
- test_decoder = undefined;
- encoding = new_encoding;
- console.log('Set encoding to ' + encoding);
- }
- }
- };
-
wssh.reset_encoding = function () {
// for console use
if (encoding === msg.encoding) {
console.log('Already reset to ' + msg.encoding);
} else {
- encoding = msg.encoding;
- console.log('Reset encoding to ' + msg.encoding);
+ set_encoding(msg.encoding);
}
};
@@ -216,7 +214,6 @@ jQuery(function($){
var reader = new window.FileReader();
reader.onloadend = function(){
- var decoder = new window.TextDecoder(encoding);
var text = decoder.decode(reader.result);
// console.log(text);
if (term) {