0Pricing
WebSockets & Realtime Systems Programming · Aula

Gerenciando salas e canais

Organize clientes WebSocket em salas e canais para que as mensagens cheguem apenas ao grupo relevante, a base de aplicações de bate-papo e colaboração.

Gerenciando salas e canais é uma aula grátis de WebSockets & Realtime Systems Programming no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de WebSockets & Realtime Systems Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de WebSockets & Realtime Systems Programming inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

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.

Perguntas Frequentes

A aula “Gerenciando salas e canais” é grátis?

Sim — o texto completo de “Gerenciando salas e canais” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de WebSockets & Realtime Systems Programming, atualize para CoddyKit PRO. O curso de WebSockets & Realtime Systems Programming inclui 4 aulas no total.

O que vou aprender em “Gerenciando salas e canais”?

Organize clientes WebSocket em salas e canais para que as mensagens cheguem apenas ao grupo relevante, a base de aplicações de bate-papo e colaboração. Você pratica WebSockets & Realtime Systems Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar WebSockets & Realtime Systems Programming?

Nenhuma experiência prévia é necessária. WebSockets & Realtime Systems Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Gerenciando salas e canais”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de WebSockets & Realtime Systems Programming?

Sim. Cada aula de WebSockets & Realtime Systems Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configurando um projeto Node.js
  2. Implementando a lógica no lado do servidor
  3. Transmitindo mensagens aos clientes
  4. Gerenciando salas e canais
← Voltar para WebSockets & Realtime Systems Programming