handle the response returned from ws server for unavailable methods

This commit is contained in:
Nuwan 2022-04-20 16:36:23 +05:30
parent 43caffb85e
commit 99d20a9869
1 changed files with 20 additions and 14 deletions

View File

@ -296,7 +296,7 @@
const socket = new WebSocket(baseUrl);
socket.onclose = function (event) {
console.error("websocket channel closed");
console.error("QWebChannel websocket closed");
if (event.code != 1000) {
// Error code 1000 means that the connection was closed normally.
// Try to reconnect.
@ -308,7 +308,7 @@
};
socket.onerror = function (error) {
console.error("websocket channel error: " + error);
console.error("QWebChannel websocket error: " + error);
};
socket.onopen = function () {
@ -319,19 +319,25 @@
let deferred;
try{
jkfrontendchannel.sendText.connect(function (message) {
//console.log("Message received via QWebChannel: " + message);
let msg = JSON.parse(message)
let req_id = msg.request_id
let response = msg.response;
console.log("Message received via QWebChannel: " + message);
//handle Method Not Implemented"
if(typeof resp === 'object' && resp[0] === "Method Not Implemented"){
//throw new Error("Method Not Implemented");
deferred.resolve(null) //return null value
}else{
let msg = JSON.parse(message)
let req_id = msg.request_id
let response = msg.response;
deferred = deferredQueue.find(d => {
return d.request_id === req_id
});
deferred = deferredQueue.find(d => {
return d.request_id === req_id
});
if(deferred){
deferred.resolve(response)
//remove this deferred object from queue
deferredQueue = deferredQueue.filter((d) => d.request_id !== deferred.request_id)
if(deferred){
deferred.resolve(response)
//remove this deferred object from queue
deferredQueue = deferredQueue.filter((d) => d.request_id !== deferred.request_id)
}
}
});
//TODO: handle method does not exist
@ -369,7 +375,7 @@
let deferred = new Deferred(appMessage.request_id)
try {
//console.log('[asyncJamClient] diverting to backend:', prop, appMessage);
console.log('[asyncJamClient] diverting to backend:', prop, appMessage);
jkfrontendchannel.receiveText(JSON.stringify(appMessage));
deferredQueue.push(deferred)
return deferred.promise;