api/cluster: implement broadcast helper

This commit is contained in:
jj 2024-11-01 14:49:52 +00:00
parent 2351cf74f4
commit 1c78dac7ed
No known key found for this signature in database
2 changed files with 16 additions and 8 deletions

View file

@ -1,7 +1,9 @@
import cluster from "node:cluster";
import net from "node:net";
import { syncSecrets } from "../security/secrets.js";
import { env } from "../config.js";
import { env, isCluster } from "../config.js";
export { isPrimary, isWorker } from "node:cluster";
export const supportsReusePort = async () => {
try {
@ -26,3 +28,13 @@ export const initCluster = async () => {
await syncSecrets();
}
export const broadcast = (message) => {
if (!isCluster || !cluster.isPrimary || !cluster.workers) {
return;
}
for (const worker of Object.values(cluster.workers)) {
worker.send(message);
}
}

View file

@ -1,8 +1,8 @@
import { env, isCluster } from "../config.js";
import { env } from "../config.js";
import { readFile } from "node:fs/promises";
import { Green, Yellow } from "../misc/console-text.js";
import cluster from "node:cluster";
import ip from "ipaddr.js";
import * as cluster from "../misc/cluster.js";
// this function is a modified variation of code
// from https://stackoverflow.com/a/32402438/14855621
@ -133,11 +133,7 @@ const loadKeys = async (source) => {
validateKeys(updated);
if (isCluster && cluster.workers) {
for (const worker of Object.values(cluster.workers)) {
worker.send({ api_keys: updated });
}
}
cluster.broadcast({ api_keys: updated });
updateKeys(updated);
}