"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var logger = require('../logger'); class ChannelBase { constructor(id) { this.clients = []; this.id = id; logger.accessLog.info('Channel Created', { channelId: id }); } addClient(client) { if (this.clientExists(client.id)) { logger.errorLog.info('Client already exits in channel', { channelId: this.id, clientId: client.id }); return { 'status': 'notice', 'message': 'client aleady exists in channel' }; } else { this.clients.push(client); logger.accessLog.info('Added client to channel', { channelId: this.id, clientId: client.id }); return { 'status': 'success', 'message': 'client added' }; } } clientExists(id) { for (let client of this.clients) { if (client.id == id) { return client; } } return null; } removeClient(id) { var index = 0; for (let client of this.clients) { if (client.id == id) { this.clients.splice(index, 1); return true; } index++; } return false; } broadcastMessage(from, message) { for (let client of this.clients) { if (client != from) { client.ws.send(message); logger.accessLog.info(`sent to ${client.id}: `, { message: message }); } else { logger.accessLog.info(`client is same as sender: ${client.id} - `, { message: message }); } } return { 'status': 'success', 'message': `message broadcast complete` }; } } ; exports.default = ChannelBase; //# sourceMappingURL=channelBase.js.map