Echtzeitfunktionen mit Phoenix Channels
Fügen Sie Ihrer Phoenix-App bidirektionale Echtzeitkommunikation hinzu, indem Sie Channels über WebSockets verwenden.
Echtzeitfunktionen mit Phoenix Channels ist eine kostenlose Elixir & Phoenix: Scalable Backend Development-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Elixir & Phoenix: Scalable Backend Development-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Elixir & Phoenix: Scalable Backend Development-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
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: falseDefining 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
endTopics 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
endHandling 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}
endBroadcasting 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}
endPushing 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
joinandhandle_inevents broadcast!fans out,push/replytarget one client- Presence tracks online users on top of Channels
Häufig gestellte Fragen
Ist die Lektion „Echtzeitfunktionen mit Phoenix Channels“ kostenlos?
Ja — der vollständige Text von „Echtzeitfunktionen mit Phoenix Channels“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Elixir & Phoenix: Scalable Backend Development-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Elixir & Phoenix: Scalable Backend Development-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Echtzeitfunktionen mit Phoenix Channels“?
Fügen Sie Ihrer Phoenix-App bidirektionale Echtzeitkommunikation hinzu, indem Sie Channels über WebSockets verwenden. Du übst Elixir & Phoenix: Scalable Backend Development mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Elixir & Phoenix: Scalable Backend Development zu starten?
Keine Vorkenntnisse erforderlich. Elixir & Phoenix: Scalable Backend Development auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Echtzeitfunktionen mit Phoenix Channels“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Elixir & Phoenix: Scalable Backend Development-Lektion Code schreiben und ausführen?
Ja. Jede Elixir & Phoenix: Scalable Backend Development-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Phoenix-Projekt einrichten und strukturieren
- Routing, Controller und Plugs
- Views, Templates und LiveView-Grundlagen
- Echtzeitfunktionen mit Phoenix Channels