1
0
mirror of https://github.com/lxsang/antd-web-apps synced 2025-04-19 18:16:44 +02:00

use web assembly and web worker for data decoder

This commit is contained in:
Xuan Sang LE 2018-09-21 20:03:13 +02:00
commit ec0a87ef5a
3 changed files with 25 additions and 29 deletions

View File

@ -7,6 +7,12 @@ coffees = assets/coffee/bootstrap.coffee \
assets/coffee/MarkOn.coffee \ assets/coffee/MarkOn.coffee \
assets/coffee/WVNC.coffee assets/coffee/WVNC.coffee
SED=sed
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
SED=gsed
endif
main: js main: js
- mkdir -p $(BUILDDIR)/assets - mkdir -p $(BUILDDIR)/assets
cp -rf $(copyfiles) $(BUILDDIR) cp -rf $(copyfiles) $(BUILDDIR)
@ -18,8 +24,8 @@ js:
for f in $(coffees); do (cat "$${f}"; echo) >> assets/scripts/main.coffee; done for f in $(coffees); do (cat "$${f}"; echo) >> assets/scripts/main.coffee; done
coffee --compile assets/scripts/main.coffee coffee --compile assets/scripts/main.coffee
coffee --compile assets/coffee/decoder.coffee coffee --compile assets/coffee/decoder.coffee
sed '2d' assets/coffee/decoder.js > assets/scripts/tmp.js $(SED) '2d' assets/coffee/decoder.js > assets/scripts/tmp.js
head -n -1 assets/scripts/tmp.js > assets/scripts/decoder.js $(SED) '$$ d' assets/scripts/tmp.js > assets/scripts/decoder.js
-rm assets/coffee/decoder.js -rm assets/coffee/decoder.js
-rm assets/scripts/tmp.js -rm assets/scripts/tmp.js
-rm assets/scripts/main.coffee -rm assets/scripts/main.coffee

View File

@ -60,16 +60,11 @@ class WVNC extends window.classes.BaseObject
me.canvas.onkeydown = me.canvas.onkeyup = me.canvas.onkeypress = (e) -> me.canvas.onkeydown = me.canvas.onkeyup = me.canvas.onkeypress = (e) ->
# get the key code # get the key code
if e.key is "Shift" keycode = e.keyCode
code = 16 if ((keycode > 47 and keycode < 58) or (keycode > 64 and keycode < 91) or (keycode > 95 and keycode < 112) or (keycode > 185 and keycode < 193) or (keycode > 218 && keycode < 223))
else if e.ctrlKey code = e.key.charCodeAt(0)
code = 17
else if e.altKey
code = 18
else if e.metaKey
code = 91
else else
code = String.charCodeAt(e.key) code = keycode
if e.type is "keydown" if e.type is "keydown"
me.sendKeyEvent code, 1 me.sendKeyEvent code, 1
else if e.type is "keyup" else if e.type is "keyup"
@ -132,7 +127,7 @@ class WVNC extends window.classes.BaseObject
console.log "socket closed" console.log "socket closed"
initConnection: () -> initConnection: () ->
vncserver = "localhost:5901" vncserver = "192.168.1.20:5901"
data = new Uint8Array vncserver.length + 5 data = new Uint8Array vncserver.length + 5
data[0] = 32 # bbp data[0] = 32 # bbp
### ###
@ -168,7 +163,7 @@ class WVNC extends window.classes.BaseObject
data = new Uint8Array 2 data = new Uint8Array 2
data[0] = code data[0] = code
data[1] = v data[1] = v
console.log String.fromCharCode(code), v console.log code, v
@socket.send( @buildCommand 0x06, data ) @socket.send( @buildCommand 0x06, data )
buildCommand: (hex, o) -> buildCommand: (hex, o) ->
@ -199,7 +194,7 @@ class WVNC extends window.classes.BaseObject
console.log "Error", dec.decode(data) console.log "Error", dec.decode(data)
when 0x81 when 0x81
console.log "Request for password" console.log "Request for password"
pass = "!x$@n9" pass = "lxsan9"#"!x$@n9"
@socket.send (@buildCommand 0x02, pass) @socket.send (@buildCommand 0x02, pass)
when 0x82 when 0x82
console.log "Request for login" console.log "Request for login"

View File

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.9.3 // Generated by CoffeeScript 1.12.7
(function() { (function() {
var APIManager, BaseObject, MarkOn, WVNC, require, var APIManager, BaseObject, MarkOn, WVNC, require,
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
@ -247,17 +247,12 @@
return sendMouseLocation(e); return sendMouseLocation(e);
}); });
me.canvas.onkeydown = me.canvas.onkeyup = me.canvas.onkeypress = function(e) { me.canvas.onkeydown = me.canvas.onkeyup = me.canvas.onkeypress = function(e) {
var code; var code, keycode;
if (e.key === "Shift") { keycode = e.keyCode;
code = 16; if ((keycode > 47 && keycode < 58) || (keycode > 64 && keycode < 91) || (keycode > 95 && keycode < 112) || (keycode > 185 && keycode < 193) || (keycode > 218 && keycode < 223)) {
} else if (e.ctrlKey) { code = e.key.charCodeAt(0);
code = 17;
} else if (e.altKey) {
code = 18;
} else if (e.metaKey) {
code = 91;
} else { } else {
code = String.charCodeAt(e.key); code = keycode;
} }
if (e.type === "keydown") { if (e.type === "keydown") {
me.sendKeyEvent(code, 1); me.sendKeyEvent(code, 1);
@ -337,7 +332,7 @@
WVNC.prototype.initConnection = function() { WVNC.prototype.initConnection = function() {
var data, rate, vncserver; var data, rate, vncserver;
vncserver = "localhost:5901"; vncserver = "192.168.1.20:5901";
data = new Uint8Array(vncserver.length + 5); data = new Uint8Array(vncserver.length + 5);
data[0] = 32; data[0] = 32;
@ -379,7 +374,7 @@
data = new Uint8Array(2); data = new Uint8Array(2);
data[0] = code; data[0] = code;
data[1] = v; data[1] = v;
console.log(String.fromCharCode(code), v); console.log(code, v);
return this.socket.send(this.buildCommand(0x06, data)); return this.socket.send(this.buildCommand(0x06, data));
}; };
@ -415,7 +410,7 @@
return console.log("Error", dec.decode(data)); return console.log("Error", dec.decode(data));
case 0x81: case 0x81:
console.log("Request for password"); console.log("Request for password");
pass = "!x$@n9"; pass = "lxsan9";
return this.socket.send(this.buildCommand(0x02, pass)); return this.socket.send(this.buildCommand(0x02, pass));
case 0x82: case 0x82:
console.log("Request for login"); console.log("Request for login");