diff options
author | Omar Rizwan <omar@omar.website> | 2021-02-08 13:45:26 -0800 |
---|---|---|
committer | Omar Rizwan <omar@omar.website> | 2021-02-08 13:45:26 -0800 |
commit | 0f2ab4b4de7e828757091e323be1caab0a70b770 (patch) | |
tree | 39d35441314690e45235af7e2ecee91c92a19264 /extension/background.js | |
parent | 2f639e2a0276efb3dbb8a470e61ee8ffc2503f5b (diff) | |
download | TabFS-0f2ab4b4de7e828757091e323be1caab0a70b770.tar.gz TabFS-0f2ab4b4de7e828757091e323be1caab0a70b770.zip |
safari: fix some races when you reload Web inspector, make ws connection retry
Diffstat (limited to 'extension/background.js')
-rw-r--r-- | extension/background.js | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/extension/background.js b/extension/background.js index 62ec7d0..e31a4c4 100644 --- a/extension/background.js +++ b/extension/background.js @@ -720,15 +720,26 @@ function tryConnect() { if (chrome.runtime.getURL('/').startsWith('safari-web-extension://')) { // Safari-only chrome.runtime.sendNativeMessage('com.rsnous.tabfs', {op: 'safari_did_connect'}, resp => { console.log(resp); - const socket = new WebSocket('ws://localhost:9991'); - socket.addEventListener('message', event => { - onMessage(JSON.parse(event.data)); - }); + let socket; + function connectSocket(checkAfterTime) { + socket = new WebSocket('ws://localhost:9991'); + socket.addEventListener('message', event => { + onMessage(JSON.parse(event.data)); + }); + + port = { postMessage(message) { + socket.send(JSON.stringify(message)); + } }; - port = { postMessage(message) { - socket.send(JSON.stringify(message)); - } }; + setTimeout(() => { + if (socket.readyState !== 1) { + console.log('ws connection failed, retrying in', checkAfterTime); + connectSocket(checkAfterTime * 2); + } + }, checkAfterTime); + } + connectSocket(200); }); return; } |