42 lines
942 B
JavaScript
42 lines
942 B
JavaScript
import { WebSocket } from "ws";
|
|
import { WebSocketServer } from "ws";
|
|
|
|
const notification_proxy = new WebSocketServer({ port: 3001 });
|
|
let notification_subs = [];
|
|
|
|
notification_proxy.on("connection", (ws) => {
|
|
notification_subs.push(ws);
|
|
});
|
|
|
|
export function send_notification(is_ok, context, message) {
|
|
let updated_subs = [];
|
|
|
|
if (notification_subs.length === 0) {
|
|
console.log("WARNING: Got a notification, but nobody is subscribed");
|
|
}
|
|
for (const sub of notification_subs) {
|
|
if (sub.readyState == WebSocket.CONNECTING) {
|
|
console.log(
|
|
"WARNING: Unable to forward a notification to client that is still connecting"
|
|
);
|
|
updated_subs.push(sub);
|
|
} else {
|
|
try {
|
|
sub.send(
|
|
JSON.stringify({
|
|
is_ok,
|
|
context,
|
|
message,
|
|
})
|
|
);
|
|
updated_subs.push(sub);
|
|
} catch {
|
|
sub.close();
|
|
console.log(
|
|
"WARNING: Fail to send a notification, closing the connection"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|