Desktop multi-user improvements.

Ylian Saint-Hilaire committed May 11, 2020 at 01:17 UTC 4a98336c15cc8c74ae526fd6547a7d873eefecbe
3 files changed +10 -6
agents/meshcore.js
+8 -4
@@ -1400,8 +1400,10 @@ function createMeshCore(agent) {
1400
1401 // Send a metadata update to all desktop sessions
1402 var users = {};
1403 - for (var i in this.httprequest.desktop.kvm.tunnels) { var userid = this.httprequest.desktop.kvm.tunnels[i].httprequest.userid; if (users[userid] == null) { users[userid] = 1; } else { users[userid]++; } }
1404 - for (var i in this.httprequest.desktop.kvm.tunnels) { this.httprequest.desktop.kvm.tunnels[i].write(JSON.stringify({ ctrlChannel: '102938', type: 'metadata', users: users })); }
1403 + if (this.httprequest.desktop.kvm.tunnels != null) {
1404 + for (var i in this.httprequest.desktop.kvm.tunnels) { try { var userid = this.httprequest.desktop.kvm.tunnels[i].httprequest.userid; if (users[userid] == null) { users[userid] = 1; } else { users[userid]++; } } catch (ex) { } }
1405 + for (var i in this.httprequest.desktop.kvm.tunnels) { try { this.httprequest.desktop.kvm.tunnels[i].write(JSON.stringify({ ctrlChannel: '102938', type: 'metadata', users: users })); } catch (ex) { } }
1406 + }
1407
1408 this.end = function () {
1409 --this.desktop.kvm.connectionCount;
@@ -1412,8 +1414,10 @@ function createMeshCore(agent) {
1414
1415 // Send a metadata update to all desktop sessions
1416 var users = {};
1415 - for (var i in this.httprequest.desktop.kvm.tunnels) { var userid = this.httprequest.desktop.kvm.tunnels[i].httprequest.userid; if (users[userid] == null) { users[userid] = 1; } else { users[userid]++; } }
1416 - for (var i in this.httprequest.desktop.kvm.tunnels) { this.httprequest.desktop.kvm.tunnels[i].write(JSON.stringify({ ctrlChannel: '102938', type: 'metadata', users: users })); }
1417 + if (this.httprequest.desktop.kvm.tunnels != null) {
1418 + for (var i in this.httprequest.desktop.kvm.tunnels) { try { var userid = this.httprequest.desktop.kvm.tunnels[i].httprequest.userid; if (users[userid] == null) { users[userid] = 1; } else { users[userid]++; } } catch (ex) { } }
1419 + for (var i in this.httprequest.desktop.kvm.tunnels) { try { this.httprequest.desktop.kvm.tunnels[i].write(JSON.stringify({ ctrlChannel: '102938', type: 'metadata', users: users })); } catch (ex) { } }
1420 + }
1421
1422 // Unpipe the web socket
1423 try
meshdesktopmultiplex.js
+1 -1
@@ -209,7 +209,7 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) {
209 }
210
211 // If this is the last viewer, disconnect the agent
212 - if ((obj.viewers.length == 0) && (obj.agent != null)) { obj.agent.close(); dispose(); return true; }
212 + if ((obj.viewers != null) && (obj.viewers.length == 0) && (obj.agent != null)) { obj.agent.close(); dispose(); return true; }
213
214 // Send an updated list of all peers to all viewers
215 obj.sendSessionMetadata();
views/default.handlebars
+1 -1
@@ -6042,7 +6042,7 @@
6042 function updateMetadata(conn, elementid) {
6043 var str = '', viewerCount = 0;
6044 if (conn && (conn.State == 3)) {
6045 - if (conn.metadata && conn.metadata.users) { for (var i in conn.metadata.users) { viewerCount++; } }
6045 + if (conn.metadata && conn.metadata.users) { for (var i in conn.metadata.users) { viewerCount += conn.metadata.users[i]; } }
6046 if (viewerCount > 1) { str = '<span onclick=showSessionMetadata(1) style=cursor:pointer>' + format(", {0} watching", viewerCount) + '</span>'; }
6047 }
6048 QH('deskmetadata', str);