Elixir & Phoenix: Scalable Backend Development · Lección

Funcionalidades en tiempo real con Phoenix Channels

Añada comunicación bidireccional en tiempo real a su aplicación Phoenix mediante Channels sobre WebSockets.

Lección 4 de 413 pasos

Funcionalidades en tiempo real con Phoenix Channels es una lección gratuita de Elixir & Phoenix: Scalable Backend Development en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Elixir & Phoenix: Scalable Backend Development, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Elixir & Phoenix: Scalable Backend Development incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

What Are Channels?

Phoenix Channels provide a real-time, bidirectional messaging layer over WebSockets (with fallbacks). Perfect for chat, notifications, and live dashboards.

The Socket Layer

Clients connect to a Socket, which authenticates the connection and routes to topics. It is defined in your endpoint.

socket "/socket", MyAppWeb.UserSocket,
  websocket: true,
  longpoll: false

Defining a UserSocket

The socket module declares which channels handle which topic patterns and how to connect.

defmodule MyAppWeb.UserSocket do
  use Phoenix.Socket
  channel "room:*", MyAppWeb.RoomChannel
  def connect(_params, socket, _info), do: {:ok, socket}
  def id(_socket), do: nil
end

Topics and Subscriptions

A topic is a string like room:lobby. Clients join a topic to send and receive messages scoped to it.

Creating a Channel

A channel module handles join and incoming events with handle_in.

defmodule MyAppWeb.RoomChannel do
  use MyAppWeb, :channel
  def join("room:" <> _id, _params, socket) do
    {:ok, socket}
  end
end

Handling Incoming Messages

handle_in/3 reacts to events pushed by clients. Return :noreply or reply to the sender.

def handle_in("new_msg", %{"body" => body}, socket) do
  broadcast!(socket, "new_msg", %{body: body})
  {:noreply, socket}
end

Broadcasting to a Topic

broadcast!/3 sends a message to EVERY subscriber of the topic, enabling real-time fan-out.

broadcast!(socket, "new_msg", %{body: "Hello everyone"})

Replying to the Sender

Return {:reply, {:ok, payload}, socket} to answer only the client that sent the event.

def handle_in("ping", _payload, socket) do
  {:reply, {:ok, %{pong: true}}, socket}
end

Pushing from the Server

Use push/3 to send a message to one connected client, for example after async work completes.

push(socket, "notification", %{text: "Job finished"})

The JavaScript Client

On the front end, the Phoenix JS client connects, joins a topic, and listens for events.

let channel = socket.channel("room:lobby", {})
channel.join()
channel.on("new_msg", payload => console.log(payload.body))

Presence Tracking

Phoenix.Presence builds on Channels to track who is online across the cluster, syncing join and leave events automatically.

Quick Check

Test your Channels knowledge.

Recap

You added real-time features with Channels:

  • Clients connect to a Socket and join topics
  • Channels handle join and handle_in events
  • broadcast! fans out, push/reply target one client
  • Presence tracks online users on top of Channels
Gratis para empezar

Aprende Elixir con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
12
Lecciones
48

Preguntas frecuentes

¿La lección «Funcionalidades en tiempo real con Phoenix Channels» es gratis?

Sí — el texto completo de «Funcionalidades en tiempo real con Phoenix Channels» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Elixir & Phoenix: Scalable Backend Development, actualiza a CoddyKit PRO. El curso de Elixir & Phoenix: Scalable Backend Development incluye 4 lecciones en total.

¿Qué aprenderé en «Funcionalidades en tiempo real con Phoenix Channels»?

Añada comunicación bidireccional en tiempo real a su aplicación Phoenix mediante Channels sobre WebSockets. Practicas Elixir & Phoenix: Scalable Backend Development con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Elixir & Phoenix: Scalable Backend Development?

No se requiere experiencia previa. Elixir & Phoenix: Scalable Backend Development en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Funcionalidades en tiempo real con Phoenix Channels»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Elixir & Phoenix: Scalable Backend Development?

Sí. Cada lección de Elixir & Phoenix: Scalable Backend Development incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configuración y estructura de un proyecto Phoenix
  2. Enrutamiento, controladores y Plugs
  3. Vistas, plantillas y conceptos básicos de LiveView
  4. Funcionalidades en tiempo real con Phoenix Channels
← Volver a Elixir & Phoenix: Scalable Backend Development