}
function createWorker(id: string, startService: string, filename: string) {
- if (workers[id])
+ if (workers[id]) {
+ workers[id].postMessage({ type: 'wake' });
return;
+ }
workers[id] = new Worker(startService, {
workerData: {
console.log(`startService - ${id}`);
if (isStandalone()) {
runner = require('../common/service_runner');
- runner.start(id, filename);
+ if (runner.getAppInstance()) {
+ runner.getAppInstance().onRequest();
+ } else {
+ runner.start(id, filename);
+ }
} else {
let startService = `${__dirname}/service_runner.js`;
createWorker(id, startService, filename);
}
}
+export function getAppInstance() {
+ return app;
+}
+
function run() {
let id = workerData.id;
let filename = workerData.filename;
return;
parentPort.on('message', (message) => {
console.log(`Received message type : ${message.type}`);
- if (message.type === 'stop') {
+ if (message.type === 'wake') {
+ app?.onRequest();
+ } else if (message.type === 'stop') {
stop(id);
setTimeout(() => {
XWalkExtension.cleanup();