X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=game.js;h=f99ff234fa24c64aa9b9b362a6ad7c475902d5fb;hb=76e5097689002f03c721c388e2ca71c52abf3354;hp=028c0393f9be02ac027922fa6b9244d70380608e;hpb=de78893aec1d5a4a0ae84610f2f01f78e9455f18;p=empires-server diff --git a/game.js b/game.js index 028c039..f99ff23 100644 --- a/game.js +++ b/game.js @@ -2,7 +2,37 @@ class Game { constructor(name) { this.name = name; + this.clients = []; + this.next_client_id = 1; } + + add_client(response) { + const id = this.next_client_id; + this.clients.push({id: id, + response: response}); + this.next_client_id++; + + return id; + } + + remove_client(id) { + this.clients = this.clients.filter(client => client.id !== id); + } + + /* Send a string to all clients */ + broadcast_string(str) { + this.clients.forEach(client => client.response.write(str + '\n')); + } + + /* Send an event to all clients. + * + * An event has both a declared type and a separate data block. + * It also ends with two newlines (to mark the end of the event). + */ + broadcast_event(type, data) { + this.broadcast_string(`event: ${type}\ndata: ${data}\n`); + } + } module.exports = Game;