Latihan 1 dari materi WebSocket & Real-time di Node.js — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Simulasikan ruang chat real-time dengan EventEmitter, pola on/emit yang sama dengan ws.on("message") dan io.emit(...).
Kode awal sudah punya require("events"), class ChatRoom extends EventEmitter dengan this.messages = [] dan dua pendengar di constructor (join dan message), method join(user), sendMessage(user, text) yang menyimpan pesan, getMessages(), dan baris-baris di bawah yang membuat Budi dan Siti bergabung lalu berkirim pesan. Semuanya biarkan.
- Di
sendMessage, di bawah komentar // Emit event "message", picu eventnya: this.emit("message", { user, text });
- Di constructor, tambahkan pendengar
this.on("leave", (user) => console.log(user + " meninggalkan chat"));
- Tambahkan method
leave(user) yang memanggil this.emit("leave", user). Pesan yang sudah terkirim tetap tersimpan di this.messages.
Output yang diharapkan:
Budi bergabung ke chat
Siti bergabung ke chat
[Budi]: Halo semua!
[Siti]: Halo Budi!
Total pesan: 2
Yang dinilai: kelima baris output persis seperti di atas, berurutan; kodenya memanggil emit("message"; dan ChatRoom dicoba lagi dengan user Xa yang bergabung, mengirim dua pesan, lalu leave, dan messages-nya harus tetap berisi 2 (yang dicetak N=2).