Fitur Waktu Nyata dengan Phoenix Channels
Tambahkan komunikasi dua arah waktu nyata ke aplikasi Phoenix Anda menggunakan Channels melalui WebSockets.
Fitur Waktu Nyata dengan Phoenix Channels adalah pelajaran Elixir & Phoenix: Scalable Backend Development 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 Elixir & Phoenix: Scalable Backend Development, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Elixir & Phoenix: Scalable Backend Development mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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
Belajar Elixir dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fitur Waktu Nyata dengan Phoenix Channels” gratis?
Ya — teks lengkap “Fitur Waktu Nyata dengan Phoenix Channels” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Elixir & Phoenix: Scalable Backend Development, upgrade ke CoddyKit PRO. Kursus Elixir & Phoenix: Scalable Backend Development mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Fitur Waktu Nyata dengan Phoenix Channels”?
Tambahkan komunikasi dua arah waktu nyata ke aplikasi Phoenix Anda menggunakan Channels melalui WebSockets. Kamu berlatih Elixir & Phoenix: Scalable Backend Development 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 Elixir & Phoenix: Scalable Backend Development?
Tidak diperlukan pengalaman sebelumnya. Elixir & Phoenix: Scalable Backend Development 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 “Fitur Waktu Nyata dengan Phoenix Channels” 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 Elixir & Phoenix: Scalable Backend Development ini?
Ya. Setiap pelajaran Elixir & Phoenix: Scalable Backend Development 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
- Penyiapan dan Struktur Proyek Phoenix
- Perutean, Pengendali, dan Plug
- Tampilan, Templat, dan Dasar-Dasar LiveView
- Fitur Waktu Nyata dengan Phoenix Channels