@genexus/web-standard-functions
Version:
GeneXus JavaScript standard functions library for web generators
56 lines • 1.97 kB
JavaScript
;
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