feat: allow binding service host and port

This commit is contained in:
Eduardo Dorado
2026-05-21 09:48:38 -03:00
parent 46ed03ac31
commit b0ec79507d
2 changed files with 29 additions and 3 deletions
+8
View File
@@ -6,6 +6,7 @@ Este microservicio actúa como un sidecar local para el ecosistema GT:Sync / Pam
- **Puerto del servicio:** `3040` - **Puerto del servicio:** `3040`
- **Host:** `127.0.0.1` (Localhost) - **Host:** `127.0.0.1` (Localhost)
- **Host remoto/LAN/ZeroTier:** usar `0.0.0.0` al levantar el proceso para escuchar en todas las interfaces.
- **Motor Node:** Binario aislado (v24.15.0) para no afectar el PATH global. - **Motor Node:** Binario aislado (v24.15.0) para no afectar el PATH global.
- **Core Stack:** `fastify` (Web Server), `zpl-js` (Parser), `canvas` (Render gráfico), `jspdf` (Exportación binaria). - **Core Stack:** `fastify` (Web Server), `zpl-js` (Parser), `canvas` (Render gráfico), `jspdf` (Exportación binaria).
@@ -25,3 +26,10 @@ Para ejecutar el servidor o instalar paquetes a través de PM2 o consola, se DEB
```powershell ```powershell
C:\Users\Dorado\Desktop\Pampero\Proyectos\zpl-pdf-microservice\node-v24.15.0\node.exe server.js C:\Users\Dorado\Desktop\Pampero\Proyectos\zpl-pdf-microservice\node-v24.15.0\node.exe server.js
``` ```
**Levantarlo para acceso desde LAN/ZeroTier:**
```powershell
C:\Users\Dorado\Desktop\Pampero\Proyectos\zpl-pdf-microservice\node-v24.15.0\node.exe server.js --host=0.0.0.0 --port=3040
```
El default sigue siendo `127.0.0.1:3040` para uso local. También se puede configurar con variables de entorno `HOST` y `PORT`.
+21 -3
View File
@@ -5,8 +5,8 @@ const { createCanvas } = require("canvas");
const { jsPDF } = require("jspdf"); const { jsPDF } = require("jspdf");
const { TextDecoder } = require("util"); const { TextDecoder } = require("util");
const HOST = "127.0.0.1"; const DEFAULT_HOST = "127.0.0.1";
const PORT = 3040; const DEFAULT_PORT = 3040;
const PAGE_PADDING_DOTS = 24; const PAGE_PADDING_DOTS = 24;
const DEFAULT_RENDER_OPTIONS = { const DEFAULT_RENDER_OPTIONS = {
width: 4, width: 4,
@@ -18,6 +18,22 @@ const DEFAULT_RENDER_OPTIONS = {
let bwipPromise; let bwipPromise;
function getCliOption(name) {
const prefix = `--${name}=`;
const option = process.argv.find((argument) => argument.startsWith(prefix));
return option ? option.slice(prefix.length) : undefined;
}
function getServerConfig() {
const port = Number(getCliOption("port") || process.env.PORT || DEFAULT_PORT);
return {
host: getCliOption("host") || process.env.HOST || DEFAULT_HOST,
port: Number.isFinite(port) && port > 0 ? port : DEFAULT_PORT,
};
}
function normalizeZpl(zpl) { function normalizeZpl(zpl) {
return zpl.replace(/\\n/g, "\n").replace(/\r\n/g, "\n"); return zpl.replace(/\\n/g, "\n").replace(/\r\n/g, "\n");
} }
@@ -660,9 +676,10 @@ function buildServer() {
async function start() { async function start() {
const app = buildServer(); const app = buildServer();
const { host, port } = getServerConfig();
try { try {
await app.listen({ host: HOST, port: PORT }); await app.listen({ host, port });
} catch (error) { } catch (error) {
app.log.error(error); app.log.error(error);
process.exit(1); process.exit(1);
@@ -676,4 +693,5 @@ if (require.main === module) {
module.exports = { module.exports = {
buildServer, buildServer,
convertZplToPdf, convertZplToPdf,
getServerConfig,
}; };