class ChatServer {
constructor() {
this.clients = new Set();
this.messageLog = [];
}
connect(client) {
this.clients.add(client);
return () => this.clients.delete(client);
}
broadcast(message, sender) {
this.messageLog.push(message);
this.clients.forEach(client => {
if (client !== sender) {
client.receive(message);
}
});
}
}
const server = new ChatServer();
const david = { name: 'David', receive: msg => console.log(`David got: ${msg}`) };
const sarah = { name: 'Sarah', receive: msg => console.log(`Sarah got: ${msg}`) };
const emma = { name: 'Emma', receive: msg => console.log(`Emma got: ${msg}`) };
const disconnectDavid = server.connect(david);
server.connect(sarah);
server.connect(emma);
server.broadcast('Hello everyone!', david);
disconnectDavid();
server.broadcast('Is David still here?', sarah);
console.log(server.clients.size); Post #2517
4.45K
CHALLENGE
- ❤ 4
- 👍 2