WebSockets & Realtime Systems Programming · Ders

Odaları ve Kanalları Yönetme

İletilerin yalnızca ilgili gruba ulaşması için WebSocket istemcilerini odalar ve kanallar hâlinde düzenleyin; bu, sohbet ve iş birliği uygulamalarının temelidir.

4. ders / 413 adım

Odaları ve Kanalları Yönetme, CoddyKit'te ücretsiz bir WebSockets & Realtime Systems Programming dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, WebSockets & Realtime Systems Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. WebSockets & Realtime Systems Programming kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

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.

Başlamak ücretsiz

Yapay zeka eğitmeniyle WebSockets & Realtime Systems Programming öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
12
Dersler
47

Sıkça Sorulan Sorular

“Odaları ve Kanalları Yönetme” dersi ücretsiz mi?

Evet — “Odaları ve Kanalları Yönetme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve WebSockets & Realtime Systems Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. WebSockets & Realtime Systems Programming kursu toplamda 4 dersten oluşur.

“Odaları ve Kanalları Yönetme” dersinde ne öğreneceğim?

İletilerin yalnızca ilgili gruba ulaşması için WebSocket istemcilerini odalar ve kanallar hâlinde düzenleyin; bu, sohbet ve iş birliği uygulamalarının temelidir. WebSockets & Realtime Systems Programming ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

WebSockets & Realtime Systems Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te WebSockets & Realtime Systems Programming, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Odaları ve Kanalları Yönetme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu WebSockets & Realtime Systems Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her WebSockets & Realtime Systems Programming dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Node.js Projesi Kurma
  2. Sunucu Tarafı Mantığını Uygulama
  3. İstemcilere İleti Yayınlama
  4. Odaları ve Kanalları Yönetme
← WebSockets & Realtime Systems Programming Sayfasına Dön