From 99d20a9869aa4855591eb9b5c7df7a139ace3fd5 Mon Sep 17 00:00:00 2001 From: Nuwan Date: Wed, 20 Apr 2022 16:36:23 +0530 Subject: [PATCH] handle the response returned from ws server for unavailable methods --- web/app/assets/javascripts/asyncJamClient.js | 34 ++++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/web/app/assets/javascripts/asyncJamClient.js b/web/app/assets/javascripts/asyncJamClient.js index 1babfdd82..a244c787d 100644 --- a/web/app/assets/javascripts/asyncJamClient.js +++ b/web/app/assets/javascripts/asyncJamClient.js @@ -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;