api/cluster: implement broadcast helper
This commit is contained in:
parent
2351cf74f4
commit
1c78dac7ed
2 changed files with 16 additions and 8 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue