101 lines
3.4 KiB
JavaScript
101 lines
3.4 KiB
JavaScript
exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSocketsClient() {
|
|
|
|
let thisObject = {
|
|
sendMessage: sendMessage,
|
|
initialize: initialize,
|
|
finalize: finalize
|
|
}
|
|
|
|
let socketClient
|
|
let callbackFunction
|
|
|
|
return thisObject
|
|
|
|
function finalize() {
|
|
socketClient.close()
|
|
socketClient = undefined
|
|
networkInterface = undefined
|
|
peerInterface = undefined
|
|
}
|
|
|
|
function initialize() {
|
|
socketClient = new SA.nodeModules.ws('ws://' + 'localhost' + ':' + global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT)
|
|
//networkInterface = SA.projects.socialTrading.modules.networkInterface.newSocialTradingModulesNetworkInterface()
|
|
|
|
setUpWebsocketClient()
|
|
}
|
|
|
|
function setUpWebsocketClient() {
|
|
try {
|
|
let handshakeDone = false
|
|
|
|
socketClient.onopen = () => { onConnection() }
|
|
socketClient.onmessage = socketMessage => { onMenssage(socketMessage) }
|
|
socketClient.onerror = err => { onError(err) }
|
|
|
|
function onConnection() {
|
|
/*
|
|
Send Handshake Message
|
|
*/
|
|
socketClient.send('Handshake Message')
|
|
console.log('Handshake Message Sent')
|
|
}
|
|
|
|
async function onMenssage(socketMessage) {
|
|
try {
|
|
|
|
let response = JSON.parse(socketMessage.data)
|
|
/*
|
|
Chack if we are waiting for the Handshake response.
|
|
*/
|
|
if (handshakeDone === false) {
|
|
if (response.result === 'Ok') {
|
|
handshakeDone = true
|
|
return
|
|
} else {
|
|
console.log('[ERROR] Web Sockets Client -> onMenssage -> handshakeDone -> message.response = ' + response.message)
|
|
return
|
|
}
|
|
}
|
|
|
|
callbackFunction.receiveResponse(message)
|
|
callbackFunction = undefined
|
|
|
|
} catch (err) {
|
|
callbackFunction = undefined
|
|
console.log('[ERROR] Web Sockets Client -> err.stack = ' + err.stack)
|
|
}
|
|
}
|
|
|
|
function onError(err) {
|
|
console.log('[ERROR] Web Sockets Client -> onError -> err.message = ' + err.message)
|
|
console.log('[ERROR] Web Sockets Client -> onError -> err.stack = ' + err.stack)
|
|
}
|
|
|
|
} catch (err) {
|
|
console.log('[ERROR] Web Sockets Client -> setUpWebsocketClient -> err.stack = ' + err.stack)
|
|
}
|
|
}
|
|
|
|
function sendMessage(message, callback) {
|
|
if (callbackFunction !== undefined) {
|
|
console.log('[ERROR] Web Sockets Client -> sendMessage -> Cannot send more messages while waiting for a response.')
|
|
return false
|
|
}
|
|
|
|
if (socketClient.readyState !== 1) { // 1 means connected and ready.
|
|
console.log('[ERROR] Web Sockets Client -> sendMessage -> Cannot send message while connection is closed.')
|
|
return false
|
|
}
|
|
|
|
try {
|
|
callbackFunction = callback
|
|
socketClient.send(message)
|
|
return true
|
|
} catch (err) {
|
|
callbackFunction = false
|
|
console.log('[ERROR] Web Sockets Client -> sendMessage -> err.stack = ' + err.stack)
|
|
return false
|
|
}
|
|
}
|
|
} |