67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
|
|
const querystring = require("querystring");
|
||
|
|
|
||
|
|
const logger = (msg) => {
|
||
|
|
console.log(`[BGC] ${msg}`);
|
||
|
|
};
|
||
|
|
|
||
|
|
logger("background client up.");
|
||
|
|
|
||
|
|
logger("connecting to SSE service...");
|
||
|
|
const port = querystring.parse(__resourceQuery.slice(1)).port;
|
||
|
|
const es = new EventSource(`http://localhost:${port}/__server_sent_events__`);
|
||
|
|
|
||
|
|
es.addEventListener(
|
||
|
|
"open",
|
||
|
|
() => {
|
||
|
|
logger("SSE service connected!");
|
||
|
|
},
|
||
|
|
false
|
||
|
|
);
|
||
|
|
|
||
|
|
es.addEventListener(
|
||
|
|
"error",
|
||
|
|
(event) => {
|
||
|
|
if (event.target.readyState === 0) {
|
||
|
|
console.error("[BGC] you need to open devServer first!");
|
||
|
|
} else {
|
||
|
|
console.error(event);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
false
|
||
|
|
);
|
||
|
|
|
||
|
|
es.addEventListener("background-updated", () => {
|
||
|
|
logger("received 'background-updated' event from SSE service.");
|
||
|
|
logger("extension will reload to reload background...");
|
||
|
|
chrome.runtime.reload(); // reload extension to reload background.
|
||
|
|
});
|
||
|
|
|
||
|
|
es.addEventListener(
|
||
|
|
"content-scripts-updated",
|
||
|
|
() => {
|
||
|
|
logger("received 'content-scripts-updated' event from SSE service.");
|
||
|
|
chrome.tabs.query({}, (tabs) => {
|
||
|
|
tabs.forEach((tab) => {
|
||
|
|
chrome.tabs.sendMessage(
|
||
|
|
tab.id,
|
||
|
|
{
|
||
|
|
from: "backgroundClient",
|
||
|
|
action: "reload-yourself",
|
||
|
|
},
|
||
|
|
(res) => {
|
||
|
|
if (chrome.runtime.lastError && !res) return;
|
||
|
|
|
||
|
|
const { from, action } = res;
|
||
|
|
if (from === "contentScriptClient" && action === "yes-sir") {
|
||
|
|
es.close();
|
||
|
|
logger("extension will reload to update content scripts...");
|
||
|
|
chrome.runtime.reload();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
},
|
||
|
|
false
|
||
|
|
);
|