feat: allow binding service host and port
This commit is contained in:
@@ -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`.
|
||||||
|
|||||||
@@ -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,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user