Websockets Client Bug Fixed, that prevented concurrent messages.

This commit is contained in:
Luis Fernando Molina committed 2021-09-16 17:02:44 +02:00
1 parent e351fe271f
commit 44033decc6
7 files changed
+55 -22

No files matched your search

+19 -11
View File
@@ -8,9 +8,10 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
let socketClient
let web3
let web3
let called = {}
let selectedNetworkNode // This is a Network Node we pick to try to connect to.
let onMessageFunctionsMap = new Map()
return thisObject
@@ -22,6 +23,7 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
web3 = undefined
called = undefined
onMessageFunctionsMap = undefined
}
async function initialize() {
@@ -192,6 +194,7 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
Network Node and from now on, all response messages will be received
at this following function.
*/
socketClient.onmessage = socketMessage => { onMenssage(socketMessage) }
resolve()
}
}
@@ -222,29 +225,23 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
}
let socketMessage = {
messageId: SA.projects.foundations.utilities.miscellaneousFunctions.genereteUniqueId(),
messageType: 'Request',
payload: message
}
socketClient.onmessage = socketMessage => { onMenssage(socketMessage) }
onMessageFunctionsMap.set(socketMessage.messageId, onMenssageFunction)
socketClient.send(
JSON.stringify(socketMessage)
)
function onMenssage(socketMessage) {
function onMenssageFunction(response) {
try {
let response = JSON.parse(socketMessage.data)
/*
Chack if we are waiting for the Handshake response.
*/
if (response.result === 'Ok') {
resolve(response.data)
} else {
console.log('[ERROR] Web Sockets Client -> onMenssage -> response.message = ' + response.message)
console.log('[ERROR] Web Sockets Client -> onMenssageFunction -> response.message = ' + response.message)
reject(response.message)
}
} catch (err) {
callbackFunction = undefined
console.log('[ERROR] Web Sockets Client -> err.stack = ' + err.stack)
@@ -252,4 +249,15 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
}
}
}
function onMenssage(socketMessage) {
let response = JSON.parse(socketMessage.data)
/*
We get the functioin that is going to resolve or reject the promise given.
*/
onMenssageFunction = onMessageFunctionsMap.get(response.messageId)
onMessageFunctionsMap.delete(response.messageId)
onMenssageFunction(response)
}
}