UNPKG

@rxap/nest-socket-io-client

Version:

This package provides a NestJS module for integrating a Socket.IO client. It offers a client proxy service and a provider for managing the Socket.IO client connection, allowing NestJS applications to easily interact with Socket.IO servers.

63 lines (62 loc) 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SocketIoClientProxyService = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const microservices_1 = require("@nestjs/microservices"); const crypto_1 = require("crypto"); const socket_io_client_provider_1 = require("./socket-io-client.provider"); let SocketIoClientProxyService = class SocketIoClientProxyService extends microservices_1.ClientProxy { async connect() { this.client.getSocket(); this.logger.debug('connect client proxy', 'SocketIoClientProxyService'); } async close() { this.client.getSocket().disconnect(); this.logger.debug('connect client proxy', 'SocketIoClientProxyService'); } /** * this method use when you use SocketIoClientProxyService.emit * @param packet * @returns */ async dispatchEvent(packet) { this.client.getSocket().emit(packet.pattern, packet.data); return; } /** * this method will be call when use SocketIoClientProxyService.send * can be use to implement request-response * @param packet * @param callback * @returns */ publish(packet, callback) { this.logger.debug(`publish to pattern '${packet.pattern}'`, 'SocketIoClientProxyService'); this.logger.verbose(`with data: ` + JSON.stringify(packet.data, undefined, 2), 'SocketIoClientProxyService'); const event = (0, crypto_1.randomBytes)(64).toString('hex'); const socket = this.client.getSocket().on(event, (data) => { callback({ response: data }); }); this.client.getSocket() .emit(packet.pattern, { data: packet.data, event, }); return () => socket.off(event, () => { this.logger.log('socket off', 'SocketIoClientProxyService'); }); } }; exports.SocketIoClientProxyService = SocketIoClientProxyService; tslib_1.__decorate([ (0, common_1.Inject)(common_1.Logger), tslib_1.__metadata("design:type", common_1.Logger) ], SocketIoClientProxyService.prototype, "logger", void 0); tslib_1.__decorate([ (0, common_1.Inject)(socket_io_client_provider_1.SocketIoClientProvider), tslib_1.__metadata("design:type", socket_io_client_provider_1.SocketIoClientProvider) ], SocketIoClientProxyService.prototype, "client", void 0); exports.SocketIoClientProxyService = SocketIoClientProxyService = tslib_1.__decorate([ (0, common_1.Injectable)() ], SocketIoClientProxyService);