api/cookie: implement cluster synchronization

This commit is contained in:
jj
2024-11-01 16:43:01 +00:00
parent 42ec28a642
commit d48cc8fc07
2 changed files with 78 additions and 2 deletions

View File

@@ -38,3 +38,34 @@ export const broadcast = (message) => {
worker.send(message);
}
}
export const send = (message) => {
if (!isCluster) {
return;
}
if (cluster.isPrimary) {
return broadcast(message);
} else {
return process.send(message);
}
}
export const waitFor = (key) => {
return new Promise(resolve => {
const listener = (message) => {
if (key in message) {
process.off('message', listener);
return resolve(message);
}
}
process.on('message', listener);
});
}
export const mainOnMessage = (cb) => {
for (const worker of Object.values(cluster.workers)) {
worker.on('message', cb);
}
}