diff --git a/extension/background.coffee b/extension/background.coffee index bb18cc7..0798876 100644 --- a/extension/background.coffee +++ b/extension/background.coffee @@ -1,3 +1,5 @@ +importScripts 'utils.js' + # TODO: # - Add a config page to set port (and possibly host) of the server. @@ -13,7 +15,7 @@ handleRequest = (sock) -> ({data}) -> sock.send JSON.stringify extend request, response: ["ok"], error: false else - obj = window + obj = self for property in path.split "." try obj = obj[property] @@ -32,7 +34,12 @@ reTryConnect = -> console.log "disconnected, retry connection in #{config.timeout}ms..." setTimeout tryConnect, config.timeout +sock = null + tryConnect = -> + if(sock && (sock.readyState == WebSocket.OPEN || sock.readyState == WebSocket.CONNECTING)) + return + reTryFunction = makeIdempotent reTryConnect try url = "ws://#{config.host}:#{config.port}/" @@ -43,5 +50,9 @@ tryConnect = -> sock.onmessage = handleRequest sock console.log "connected: #{url}" -tryConnect() +chrome.runtime.onInstalled.addListener tryConnect +chrome.runtime.onStartup.addListener tryConnect +chrome.alarms.create 'keepAlive', periodInMinutes: 0.4 +chrome.alarms.onAlarm.addListener (alarm) -> + tryConnect() if alarm.name == 'keepAlive' diff --git a/extension/manifest.json b/extension/manifest.json index 518ab3c..a29eee7 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -1,7 +1,7 @@ { "name": "Chromix-Too", - "version": "0.0.2", - "manifest_version": 2, + "version": "0.0.3", + "manifest_version": 3, "description": "Command-line or scripted access to chrome's extension API.", "permissions": [ @@ -13,13 +13,13 @@ "sessions", "notifications", "webNavigation", + "alarms" + ], + "host_permissions": [ "" ], - "background": { "scripts": - [ - "utils.js", - "background.js" - ] + "background": { + "service_worker": "background.js" } } diff --git a/extension/utils.coffee b/extension/utils.coffee index 39b4136..909544d 100644 --- a/extension/utils.coffee +++ b/extension/utils.coffee @@ -1,4 +1,4 @@ -root = exports ? window +root = exports ? self extend = root.extend = (hash1, hash2) -> hash1[key] = hash2[key] for own key of hash2