kannon/classes/Message.js
2022-04-14 14:23:41 +02:00

47 lines
No EOL
1.1 KiB
JavaScript

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;