Repository navigation
Expand file tree
/
Copy pathCommunication.js
More file actions
97 lines (54 loc) · 1.47 KB
/
Copy pathCommunication.js
File metadata and controls
97 lines (54 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// external varaibles
//
// _globalInput;
// _globalOutputs;
// _globalReferences;
class Communication {
constructor(onCloseFnc, outSignal = 1) {
this.outSignal = outSignal
this.socket = new WebSocket("ws://localhost:6660");
this.socket.parent = this;
this.socket.onopen = function(event) {
console.log("[open] Connection established");
};
this.socket.onmessage = function(event) {
console.log(`received: ${event.data}`);
let cmdPar = event.data.split("|");
let cmd = cmdPar[0];
let par = cmdPar[1];
let comm = event.target.parent;
var N;
var outStr;
switch (cmd) {
case 'set input':
_globalInput = parseFloat(par);
break;
case 'get outputs':
N = _globalOutputs.length;
let sigOut = comm.outSignal;
outStr = N + ',' + _globalOutputs.map((x)=>sigOut*x).join(',');
console.log(outStr);
comm.socket.send(outStr);
break;
case 'get references':
N = _globalReferences.length;
outStr = N + ',' + _globalReferences.join(',');
console.log(outStr);
comm.socket.send(outStr);
break;
}
};
this.socket.onclose = function(event) {
if (event.wasClean) {
console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
} else {
console.log('[close] Connection died');
onCloseFnc()
}
};
this.socket.onerror = function(error) {
console.log(`[error] ${error.message}`);
onCloseFnc();
};
}
}