dm-web-react
Version:
The DM web client with React.
104 lines • 4.53 kB
JavaScript
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