UNPKG

@genexus/web-standard-functions

Version:

GeneXus JavaScript standard functions library for web generators

56 lines 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ws_1 = require("../websocket/ws"); const pubSub_1 = require("../pubSub/pubSub"); const log = require("loglevel"); class SocketService { constructor() { this.logger = log.getLogger("SocketManagerService"); this.connections = {}; } static getInstance() { if (!SocketService.instance) { SocketService.instance = new SocketService(); } return SocketService.instance; } async open(url, id) { if (!this.connections[url]) { const connection = new ws_1.WS(); this.connections[url] = connection; this.attachHandlers(id !== null ? id : url, connection); return connection.open(url); } return Promise.resolve(); } close(url) { const connection = this.connections[url]; if (connection) { delete this.connections[url]; connection.close(); } } async send(url, msg) { await this.open(url); this.connections[url].send(msg); } attachHandlers(id, connection) { connection.onOpen = (ev) => { (0, pubSub_1.publish)(`${id}.socket.connected`, ev); (0, pubSub_1.publish)(`GeneXus.Client.Socket.Connected`, ev); }; connection.onClose = (ev) => { (0, pubSub_1.publish)(`${id}.socket.connectionclosed`, ev); }; connection.onError = (ev) => { (0, pubSub_1.publish)(`${id}.socket.connectionfailed`, ev); (0, pubSub_1.publish)(`GeneXus.Client.Socket.ConnectionFailed`, ev); }; connection.onMessage = (ev) => { (0, pubSub_1.publish)(`${id}.socket.messagereceived`, ev.data); (0, pubSub_1.publish)(`GeneXus.Client.Socket.MessageReceived`, ev.data); }; } } exports.default = SocketService; //# sourceMappingURL=socketService.js.map