UNPKG

dm-web-react

Version:

The DM web client with React.

104 lines 4.53 kB
import * as io from "socket.io-client"; import { DefineService } from "../services/defineService"; import { SocketIoInnodealingMessage } from "../models/socketIo/socketIoInnodealingMessage"; import { SocketIoEventMessage } from "../models/socketIo/socketIoEventMessage"; import { ObjectUtils, StringUtils } from "ts-commons"; import { SocketIoEventType } from "../models/enum/socketIoEventType"; import { SocketIoInnodealingWorkerMessage } from "../models/workerMessage/socketIoInnodealingWorkerMessage"; import { SocketIoEventWorkerMessage } from "../models/workerMessage/socketIoEventWorkerMessage"; var SocketIOService = /** @class */ (function () { function SocketIOService() { this.defineService = DefineService.Instance; this.eventMap = new Map(); } Object.defineProperty(SocketIOService, "Instance", { get: function () { return this.instance; }, enumerable: true, configurable: true }); SocketIOService.prototype.connect = function () { var _this = this; console.log("==== socketio connect start ===="); var socket = io(this.defineService.getSocketIoUrl(), { transports: ["websocket", "polling"], query: "user=test", }); socket.on("error", function (reason) { console.error("unable to connect to Socket.IO", reason); var message = new SocketIoEventMessage(); message.eventType = SocketIoEventType.ERROR; message.error = reason; var messageWrapper = new SocketIoEventWorkerMessage(message); _this.broadcastMessage(messageWrapper); }); socket.on("reconnect", function () { console.log("reconnect"); var message = new SocketIoEventMessage(); message.eventType = SocketIoEventType.RECONNECT; var messageWrapper = new SocketIoEventWorkerMessage(message); _this.broadcastMessage(messageWrapper); }); socket.on("connect", function () { console.log("connect"); var message = new SocketIoEventMessage(); message.eventType = SocketIoEventType.CONNECT; var messageWrapper = new SocketIoEventWorkerMessage(message); _this.broadcastMessage(messageWrapper); }); socket.on("disconnect", function () { console.log("disconnect"); var message = new SocketIoEventMessage(); message.eventType = SocketIoEventType.DISCONNECT; var messageWrapper = new SocketIoEventWorkerMessage(message); _this.broadcastMessage(messageWrapper); }); socket.on("innodealing_msg", function (data) { var socketIoMessage = _this.getSocketIoMessage(data); if (socketIoMessage) { console.log("receive socketIo messageId: ", socketIoMessage.messageId); var messageWrapper = new SocketIoInnodealingWorkerMessage(socketIoMessage); _this.broadcastMessage(messageWrapper); } }); }; SocketIOService.prototype.getSocketIoMessage = function (data) { var result = null; if (ObjectUtils.isNullOrUndefined(data)) { return result; } if (typeof data.messageId === "string" && typeof data.messageType === "string") { result = new SocketIoInnodealingMessage(); result.messageId = data.messageId; result.messageType = data.messageType; result.data = data.data; } return result; }; SocketIOService.prototype.register = function (event) { var key = StringUtils.newGuid(); this.eventMap.set(key, event); console.log("SocketIOService.register success, key: ", key); return key; }; SocketIOService.prototype.unRegister = function (key) { this.eventMap.delete(key); }; SocketIOService.prototype.broadcastMessage = function (data) { this.eventMap.forEach(function (value) { if (value) { try { value(data); } catch (e) { // catch exception. } } }); }; SocketIOService.instance = new SocketIOService(); return SocketIOService; }()); export { SocketIOService }; //# sourceMappingURL=socketIoService.js.map