diff --git a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee index 5a59ea504f..17de2df2b6 100644 --- a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee +++ b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee @@ -77,8 +77,15 @@ module.exports = WebsocketLoadBalancer = status = EventLogger.checkEventOrder("editor-events", message._id, message) if status is "duplicate" return # skip duplicate events + + is_restricted_message = message.message not in RESTRICTED_USER_MESSAGE_TYPE_PASS_LIST + # send messages only to unique clients (due to duplicate entries in io.sockets.clients) clientList = io.sockets.clients(message.room_id) + .filter((client) -> + !(is_restricted_message && client.ol_context['is_restricted_user']) + ) + # avoid unnecessary work if no clients are connected return if clientList.length is 0 logger.log { @@ -93,11 +100,9 @@ module.exports = WebsocketLoadBalancer = Async.eachLimit clientList , 2 , (client, cb) -> - is_restricted_user = client.ol_context['is_restricted_user'] if !seen[client.id] seen[client.id] = true - if !(is_restricted_user && message.message not in RESTRICTED_USER_MESSAGE_TYPE_PASS_LIST) - client.emit(message.message, message.payload...) + client.emit(message.message, message.payload...) cb() , (err) -> if err?