const { EVENT_DELIMITER } = require('../libs/constants.js'); class Message { constructor(id, data) { this.id = id; this.data = data; } getId() { return this.id; } getData() { return this.data; } toString() { return JSON.stringify(this); } async send(client, addClientId) { if (client === undefined) { return this.broadcast(); } if (addClientId) { this.data.clientId = client.id; } const data = this.toString(); logger.debug(client.getTag() + ' sending data: ' + data); await new Promise((resolve, reject) => { client.socket.write(this.toString() + EVENT_DELIMITER, resolve); }); return client.id; } async broadcast(addClientId) { const promises = []; for (let index = 0; index < server.clients.length; index++) { promises.push(this.send(server.clients[index], addClientId)); } return await Promise.allSettled(promises); } } module.exports = Message;