Latihan 1: WebSocket & Real-time — Node.js

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.

  1. Di sendMessage, di bawah komentar // Emit event "message", picu eventnya: this.emit("message", { user, text });
  2. Di constructor, tambahkan pendengar this.on("leave", (user) => console.log(user + " meninggalkan chat"));
  3. 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).

Hint