From 7380d523d5f57a616cb66e7ac05dcbddc71f0620 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Tue, 4 Feb 2020 11:39:37 +0000 Subject: [PATCH 1/2] avoid emitting when client not connected the emit is happening asynchronously after the client list is computed, so clients may have disconnected in the intervening time. --- services/real-time/app/coffee/WebsocketLoadBalancer.coffee | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee index 12b7ef812b..a93f5f9c9c 100644 --- a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee +++ b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee @@ -96,6 +96,9 @@ module.exports = WebsocketLoadBalancer = , (client, cb) -> Utils.getClientAttributes client, ['is_restricted_user'], (err, {is_restricted_user}) -> return cb(err) if err? + if !client.connected + logger.warn {channel:channel, client: client.id}, "skipping emit, client not connected" + return cb() if !seen[client.id] seen[client.id] = true if !(is_restricted_user && message.message not in RESTRICTED_USER_MESSAGE_TYPE_PASS_LIST) From ebb83e463376470a857e0a1fbf704ac5227e30de Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Tue, 4 Feb 2020 11:58:55 +0000 Subject: [PATCH 2/2] use diconnected property, not connected --- services/real-time/app/coffee/WebsocketLoadBalancer.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee index a93f5f9c9c..e9a72dbc6a 100644 --- a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee +++ b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee @@ -96,7 +96,7 @@ module.exports = WebsocketLoadBalancer = , (client, cb) -> Utils.getClientAttributes client, ['is_restricted_user'], (err, {is_restricted_user}) -> return cb(err) if err? - if !client.connected + if client.disconnected logger.warn {channel:channel, client: client.id}, "skipping emit, client not connected" return cb() if !seen[client.id]