@haku-sci/utils
Version:
utils from haku-sci. Library only
40 lines • 1.75 kB
JavaScript
;
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