More work on desktop multiplexor.
Ylian Saint-Hilaire committed
Apr 27, 2020 at 17:54 UTC
87992cbcab645427c45f9ddbfaf51028f2f62ff8
1 file changed
+11
-10
meshdesktopmultiplex.js
+11
-10
@@ -57,7 +57,7 @@ MNG_ERROR = 65,
57
MNG_ENCAPSULATE_AGENT_COMMAND = 70
58
*/
59
60
-function CreateDesktopDecoder(parent, domain, id, func) {
60
+function CreateDesktopMultiplexor(parent, domain, id, func) {
61
var obj = {};
62
obj.id = id;
63
obj.parent = parent;
@@ -90,7 +90,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
90
// Add an agent or viewer
91
obj.addPeer = function (peer) {
92
if (peer.req.query.browser) {
93
- //console.log('addPeer-viewer');
93
+ //console.log('addPeer-viewer', obj.id);
94
95
// Setup the viewer
96
if (obj.viewers.indexOf(peer) >= 0) return true;
@@ -106,9 +106,9 @@ function CreateDesktopDecoder(parent, domain, id, func) {
106
peer.paused = false;
107
108
// Indicated we are connected
109
- obj.sendToViewer(peer, 'c');
109
+ obj.sendToViewer(peer, obj.recordingFile ? 'cr' : 'c');
110
} else {
111
- //console.log('addPeer-agent');
111
+ //console.log('addPeer-agent', obj.id);
112
if (obj.agent != null) return false;
113
114
// Setup the agent
@@ -118,7 +118,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
118
peer.paused = false;
119
120
// Indicated we are connected and send connection options and protocol if needed
121
- obj.sendToAgent('c');
121
+ obj.sendToAgent(obj.recordingFile?'cr':'c');
122
if (obj.viewerConnected == true) {
123
if (obj.protocolOptions != null) { obj.sendToAgent(JSON.stringify(obj.protocolOptions)); } // Send connection options
124
obj.sendToAgent('2'); // Send remote desktop connect
@@ -131,7 +131,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
131
// Return true if this multiplexor is no longer needed.
132
obj.removePeer = function (peer) {
133
if (peer == obj.agent) {
134
- //console.log('removePeer-agent');
134
+ //console.log('removePeer-agent', obj.id);
135
// Clean up the agent
136
obj.agent = null;
137
@@ -140,7 +140,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
140
dispose();
141
return true;
142
} else {
143
- //console.log('removePeer-viewer');
143
+ //console.log('removePeer-viewer', obj.id);
144
// Remove a viewer
145
var i = obj.viewers.indexOf(peer);
146
if (i == -1) return false;
@@ -171,6 +171,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
171
172
// Clean up ourselves
173
function dispose() {
174
+ //console.log('dispose', obj.id);
175
delete obj.viewers;
176
delete obj.imagesCounters;
177
delete obj.images;
@@ -253,10 +254,10 @@ function CreateDesktopDecoder(parent, domain, id, func) {
254
} else {
255
if (viewer.dataPtr != null) {
256
// Send the next image
256
- if ((viewer.lastImageNumberSent != null) && ((viewer.lastImageNumberSent + 1) != (viewer.dataPtr))) { console.log('SVIEW-S1', viewer.lastImageNumberSent, viewer.dataPtr); } // DEBUG
257
+ //if ((viewer.lastImageNumberSent != null) && ((viewer.lastImageNumberSent + 1) != (viewer.dataPtr))) { console.log('SVIEW-S1', viewer.lastImageNumberSent, viewer.dataPtr); } // DEBUG
258
var image = obj.images[viewer.dataPtr];
259
viewer.lastImageNumberSent = viewer.dataPtr;
259
- if ((image.next != null) && ((viewer.dataPtr + 1) != image.next)) { console.log('SVIEW-S2', viewer.dataPtr, image.next); } // DEBUG
260
+ //if ((image.next != null) && ((viewer.dataPtr + 1) != image.next)) { console.log('SVIEW-S2', viewer.dataPtr, image.next); } // DEBUG
261
viewer.dataPtr = image.next;
262
viewer.ws.send(image.data, function () { sendViewerNext(viewer); });
263
@@ -745,7 +746,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
746
// Create if needed and add this peer to the desktop multiplexor
747
obj.deskDecoder = parent.desktoprelays[obj.id];
748
if (obj.deskDecoder == null) {
748
- CreateDesktopDecoder(parent, domain, obj.id, function (deskDecoder) {
749
+ CreateDesktopMultiplexor(parent, domain, obj.id, function (deskDecoder) {
750
obj.deskDecoder = deskDecoder;
751
parent.desktoprelays[obj.id] = obj.deskDecoder;
752
obj.deskDecoder.addPeer(obj);