UNPKG

@haku-sci/utils

Version:

utils from haku-sci. Library only

40 lines 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TCP = void 0; const microservices_1 = require("@nestjs/microservices"); const rxjs_1 = require("rxjs"); const utils = require("../utils"); const consul_1 = require("./consul"); class TCP { static async sendTCPMessage(service, action, resource, payload) { const client = await microservices_1.ClientProxyFactory.create({ transport: microservices_1.Transport.TCP, options: await consul_1.Consul.getServiceURI(service), }); try { payload.sender = await utils.microServiceName(); let response$ = await client.send([resource, action].join("/"), payload).pipe((0, rxjs_1.catchError)(err => { const errorPayload = typeof err === 'object' ? err : { message: String(err) }; return (0, rxjs_1.throwError)(() => new Error(`[${service}] ${errorPayload.message}`)); })); const watchdogTimeout = parseInt(process.env.WATCHDOG); if (!isNaN(watchdogTimeout) && watchdogTimeout > 0) response$ = response$.pipe((0, rxjs_1.timeout)({ first: watchdogTimeout })); response$ = response$.pipe((0, rxjs_1.defaultIfEmpty)(null)); const result = await (0, rxjs_1.lastValueFrom)(response$); if (result?.error) throw new Error(`[${service}] ${result.message}`); return result; } finally { try { await client.close(); } catch (closeError) { console.error("Error closing client:", closeError.message); } } } } exports.TCP = TCP; //# sourceMappingURL=tcp.js.map