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);