From e1c383df5367cf124737059f538cc8f87ece4d86 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Mon, 31 Mar 2025 23:42:55 +0000 Subject: [PATCH] use universal service registration via ipc --- server/src/engines/hyper-express-ng/index.js | 48 ------------------- server/src/engines/hyper-express/index.js | 50 -------------------- server/src/server.js | 49 +++++++++++++++++++ 3 files changed, 49 insertions(+), 98 deletions(-) diff --git a/server/src/engines/hyper-express-ng/index.js b/server/src/engines/hyper-express-ng/index.js index 2b57f69..266d5b3 100755 --- a/server/src/engines/hyper-express-ng/index.js +++ b/server/src/engines/hyper-express-ng/index.js @@ -78,54 +78,6 @@ export default class HyperExpressEngineNG { } listen = async () => { - if (process.env.lb_service) { - let pathOverrides = Object.keys(this.router.map).map((key) => { - return key.split("/")[1] - }) - - // remove duplicates - pathOverrides = [...new Set(pathOverrides)] - - // remove "" and _map - pathOverrides = pathOverrides.filter((key) => { - if (key === "" || key === "_map") { - return false - } - - return true - }) - - if (this.ctx.constructor.enableWebsockets === true) { - process.send({ - type: "router:ws:register", - id: process.env.lb_service.id, - index: process.env.lb_service.index, - data: { - namespace: this.ctx.constructor.refName, - ws_path: this.ctx.constructor.wsPath ?? "/", - listen_port: this.ctx.constructor.listen_port, - }, - }) - } - - if (process.send) { - // try to send router map to host - process.send({ - type: "router:register", - id: process.env.lb_service.id, - index: process.env.lb_service.index, - data: { - router_map: this.router.map, - path_overrides: pathOverrides, - listen: { - ip: this.ctx.constructor.listen_ip, - port: this.ctx.constructor.listen_port, - }, - }, - }) - } - } - await this.app.listen(this.ctx.constructor.listen_port) } diff --git a/server/src/engines/hyper-express/index.js b/server/src/engines/hyper-express/index.js index 6e15d46..dae9423 100755 --- a/server/src/engines/hyper-express/index.js +++ b/server/src/engines/hyper-express/index.js @@ -75,56 +75,6 @@ export default class Engine { } listen = async () => { - if (process.env.lb_service) { - let pathOverrides = Object.keys(this.router.map).map((key) => { - return key.split("/")[1] - }) - - // remove duplicates - pathOverrides = [...new Set(pathOverrides)] - - // remove "" and _map - pathOverrides = pathOverrides.filter((key) => { - if (key === "" || key === "_map") { - return false - } - - return true - }) - - if (this.ctx.constructor.enableWebsockets) { - process.send({ - type: "router:ws:register", - id: process.env.lb_service.id, - index: process.env.lb_service.index, - data: { - namespace: this.ctx.constructor.refName, - listen_port: this.ctx.constructor.listen_port, - ws_path: - this.ctx.constructor.wsPath ?? - this.ctx.constructor.refName, - }, - }) - } - - if (process.send) { - // try to send router map to host - process.send({ - type: "router:register", - id: process.env.lb_service.id, - index: process.env.lb_service.index, - data: { - router_map: this.router.map, - path_overrides: pathOverrides, - listen: { - ip: this.ctx.constructor.listen_ip, - port: this.ctx.constructor.listen_port, - }, - }, - }) - } - } - await this.app.listen(this.ctx.constructor.listen_port) } diff --git a/server/src/server.js b/server/src/server.js index bc431e0..62a9da1 100755 --- a/server/src/server.js +++ b/server/src/server.js @@ -209,6 +209,7 @@ class Server { // if is a linebridge service then initialize IPC Channels if (process.env.lb_service) { await this.initializeIpc() + await this.registerServiceToIPC() } // try to execute beforeInitialize hook. @@ -326,6 +327,54 @@ class Server { return execs } + + registerServiceToIPC = () => { + if (!process.env.lb_service || !process.send) { + console.error("IPC not available") + return null + } + + // get only the root paths + let paths = Object.keys(this.engine.router.map).map((key) => { + const root = key.split("/")[1] + + return "/" + root + }) + + // remove duplicates + paths = [...new Set(paths)] + + // remove "" and _map + paths = paths.filter((key) => { + if (key === "/" || key === "/_map") { + return false + } + + return true + }) + + process.send({ + type: "service:register", + id: process.env.lb_service.id, + index: process.env.lb_service.index, + register: { + namespace: this.constructor.refName, + http: { + enabled: true, + paths: paths, + proto: this.ssl?.key && this.ssl?.cert ? "https" : "http", + }, + websocket: { + enabled: this.constructor.enableWebsockets, + path: this.constructor.wsPath ?? "/", + }, + listen: { + ip: this.params.listen_ip, + port: this.params.listen_port, + }, + }, + }) + } } module.exports = Server