From 4e92ff174074a507179a71af54d20d8e17550196 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 7 Sep 2021 16:57:48 +0200 Subject: [PATCH] Event Broadcasting --- .../Network/NT/Modules/WebSocketsInterface.js | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/Projects/Network/NT/Modules/WebSocketsInterface.js b/Projects/Network/NT/Modules/WebSocketsInterface.js index baded6584..6a48a8a8a 100644 --- a/Projects/Network/NT/Modules/WebSocketsInterface.js +++ b/Projects/Network/NT/Modules/WebSocketsInterface.js @@ -104,18 +104,23 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock return } + let response switch (caller.role) { case 'Network Client': { - let response = await clientInterface.messageReceived(messageHeader.payload, caller.userProfile) + response = await clientInterface.messageReceived(messageHeader.payload, caller.userProfile) caller.socket.send(JSON.stringify(response)) break } case 'Network Peer': { - let response = await peerInterface.messageReceived(messageHeader.payload) + response = await peerInterface.messageReceived(messageHeader.payload) caller.socket.send(JSON.stringify(response)) break } } + if (response.result === 'Ok' && messageHeader.payload.requestType === 'Event') { + broadcastToPeers(messageHeader, caller) + broadcastToClients(messageHeader, caller) + } break } default: { @@ -408,6 +413,31 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock } } } + + function broadcastToPeers(messageHeader, caller) { + let callerIdToAVoid + if (caller.role === 'Network Peer') { + callerIdToAVoid = caller.socket.id + } + for (let i = 0; i < thisObject.networkPeers.length; i++) { + let networkPeer = thisObject.networkPeers[i] + if (networkPeer.socket.id === callerIdToAVoid) { continue } + networkPeer.socket.send(messageHeader) + } + } + + function broadcastToClients(messageHeader, caller) { + let callerIdToAVoid + if (caller.role === 'Network Client') { + callerIdToAVoid = caller.socket.id + } + for (let i = 0; i < thisObject.networkClients.length; i++) { + let networkClient = thisObject.networkClients[i] + if (networkClient.socket.id === callerIdToAVoid) { continue } + networkClient.socket.send(messageHeader) + } + } + } catch (err) { console.log('[ERROR] Web Sockets Interface -> setUpWebSocketServer -> err.stack = ' + err.stack) }