diff --git a/dist/src/services/webSocketServer/index.js b/dist/src/services/webSocketServer/index.js deleted file mode 100644 index 52aae51..0000000 --- a/dist/src/services/webSocketServer/index.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WebSocketServer = void 0; -const events_1 = __importDefault(require("events")); -const url_1 = __importDefault(require("url")); -const ws_1 = __importDefault(require("ws")); -const enums_1 = require("../../enums"); -const client_1 = require("../../models/client"); -const WS_PATH = 'peerjs'; -class WebSocketServer extends events_1.default { - constructor({ server, realm, config }) { - super(); - this.setMaxListeners(0); - this.realm = realm; - this.config = config; - const path = this.config.path; - this.path = `${path}${path.endsWith('/') ? "" : "/"}${WS_PATH}`; - const options = { - path: this.path, - server, - }; - this.socketServer = (config.createWebSocketServer ? - config.createWebSocketServer(options) : - new ws_1.default.Server(options)); - this.socketServer.on("connection", (socket, req) => this._onSocketConnection(socket, req)); - this.socketServer.on("error", (error) => this._onSocketError(error)); - } - _onSocketConnection(socket, req) { - var _a; - const { query = {} } = url_1.default.parse((_a = req.url) !== null && _a !== void 0 ? _a : '', true); - const { id, token, key } = query; - if (!id || !token || !key) { - return this._sendErrorAndClose(socket, enums_1.Errors.INVALID_WS_PARAMETERS); - } - if (key !== this.config.key) { - return this._sendErrorAndClose(socket, enums_1.Errors.INVALID_KEY); - } - const client = this.realm.getClientById(id); - if (client) { - if (token !== client.getToken()) { - // ID-taken, invalid token - socket.send(JSON.stringify({ - type: enums_1.MessageType.ID_TAKEN, - payload: { msg: "ID is taken" } - })); - return socket.close(); - } - return this._configureWS(socket, client); - } - this._registerClient({ socket, id, token }); - } - _onSocketError(error) { - // handle error - this.emit("error", error); - } - _registerClient({ socket, id, token }) { - // Check concurrent limit - const clientsCount = this.realm.getClientsIds().length; - if (clientsCount >= this.config.concurrent_limit) { - return this._sendErrorAndClose(socket, enums_1.Errors.CONNECTION_LIMIT_EXCEED); - } - const newClient = new client_1.Client({ id, token }); - this.realm.setClient(newClient, id); - socket.send(JSON.stringify({ type: enums_1.MessageType.OPEN })); - this._configureWS(socket, newClient); - } - _configureWS(socket, client) { - client.setSocket(socket); - // Cleanup after a socket closes. - socket.on("close", () => { - if (client.getSocket() === socket) { - this.realm.removeClientById(client.getId()); - this.emit("close", client); - } - }); - // Handle messages from peers. - socket.on("message", (data) => { - try { - const message = JSON.parse(data); - message.src = client.getId(); - this.emit("message", client, message); - } - catch (e) { - this.emit("error", e); - } - }); - this.emit("connection", client); - } - _sendErrorAndClose(socket, msg) { - socket.send(JSON.stringify({ - type: enums_1.MessageType.ERROR, - payload: { msg } - })); - socket.close(); - } -} -exports.WebSocketServer = WebSocketServer;