Mengelola Ruang dan Kanal
Atur klien WebSocket ke dalam ruang dan kanal agar pesan hanya sampai kepada grup yang relevan, sebagai fondasi aplikasi obrolan dan kolaborasi.
Mengelola Ruang dan Kanal adalah pelajaran WebSockets & Realtime Systems Programming gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar WebSockets & Realtime Systems Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus WebSockets & Realtime Systems Programming mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Why Rooms
Broadcasting to everyone does not scale for multi-topic apps. Rooms (or channels) let you group clients so a message only reaches members of one group, like a single chat room.
Modeling Rooms
A simple model maps a room name to a set of client connections.
const rooms = new Map(); // roomName -> Set<ws>Joining a Room
When a client asks to join, add its connection to that room set, creating the set on first use.
function join(room, ws) {
if (!rooms.has(room)) rooms.set(room, new Set());
rooms.get(room).add(ws);
}Leaving a Room
Remove the connection on leave, and clean up empty rooms to avoid leaks.
function leave(room, ws) {
const set = rooms.get(room);
if (!set) return;
set.delete(ws);
if (set.size === 0) rooms.delete(room);
}A Join Message Protocol
Clients signal intent with structured messages. Parse the type and route accordingly.
ws.on('message', (raw) => {
const msg = JSON.parse(raw);
if (msg.type === 'join') join(msg.room, ws);
});Broadcasting to a Room
To send to a room, iterate only that room set, skipping closed sockets.
function toRoom(room, payload) {
const set = rooms.get(room);
if (!set) return;
for (const client of set) {
if (client.readyState === 1) client.send(payload);
}
}Tracking a Client\u2019s Rooms
Store room membership on the connection so cleanup on disconnect is easy.
ws.rooms = new Set();Cleaning Up on Disconnect
When a socket closes, remove it from every room it joined.
ws.on('close', () => {
for (const room of ws.rooms) leave(room, ws);
});Channels vs Rooms
Terms vary. Often a channel is a named topic clients subscribe to, while a room is a private group. Mechanically both are just keyed sets of subscribers.
Presence Awareness
You can derive presence from room membership: the size of a room set is the number of online members, and join/leave events can notify others.
toRoom(room, JSON.stringify({ type: 'presence', count: rooms.get(room).size }));Best Practices
Keep room management robust:
- Always clean up on disconnect
- Skip sockets not in OPEN state
- Validate room names from clients
- Remove empty rooms to free memory
Quick Check
Test your rooms knowledge.
Recap
You added rooms to your WebSocket server:
- Map room names to sets of connections
- Handle join/leave via structured messages
- Broadcast only to a room\u2019s members
- Clean up on disconnect and derive presence
This is the backbone of chat and collaboration features.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengelola Ruang dan Kanal” gratis?
Ya — teks lengkap “Mengelola Ruang dan Kanal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus WebSockets & Realtime Systems Programming, upgrade ke CoddyKit PRO. Kursus WebSockets & Realtime Systems Programming mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengelola Ruang dan Kanal”?
Atur klien WebSocket ke dalam ruang dan kanal agar pesan hanya sampai kepada grup yang relevan, sebagai fondasi aplikasi obrolan dan kolaborasi. Kamu berlatih WebSockets & Realtime Systems Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai WebSockets & Realtime Systems Programming?
Tidak diperlukan pengalaman sebelumnya. WebSockets & Realtime Systems Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Mengelola Ruang dan Kanal” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran WebSockets & Realtime Systems Programming ini?
Ya. Setiap pelajaran WebSockets & Realtime Systems Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menyiapkan Proyek Node.js
- Mengimplementasikan Logika Sisi Server
- Menyiarkan Pesan ke Klien
- Mengelola Ruang dan Kanal