0Pricing
Elixir & Phoenix: Scalable Backend Development · 강의

Phoenix Channels로 실시간 기능 구현하기

WebSockets를 통한 Channels를 사용해 Phoenix 앱에 양방향 실시간 통신을 추가하는 방법을 배웁니다.

Phoenix Channels로 실시간 기능 구현하기은(는) CoddyKit의 무료 Elixir & Phoenix: Scalable Backend Development 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Elixir & Phoenix: Scalable Backend Development 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Elixir & Phoenix: Scalable Backend Development 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

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

자주 묻는 질문

“Phoenix Channels로 실시간 기능 구현하기” 강의는 무료인가요?

네 — “Phoenix Channels로 실시간 기능 구현하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Elixir & Phoenix: Scalable Backend Development 강의 전체를 잠금 해제할 수 있습니다. Elixir & Phoenix: Scalable Backend Development 강의에는 총 4개의 강의가 포함되어 있습니다.

“Phoenix Channels로 실시간 기능 구현하기”에서 뭘 배우나요?

WebSockets를 통한 Channels를 사용해 Phoenix 앱에 양방향 실시간 통신을 추가하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 Elixir & Phoenix: Scalable Backend Development을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Elixir & Phoenix: Scalable Backend Development을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Elixir & Phoenix: Scalable Backend Development은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“Phoenix Channels로 실시간 기능 구현하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Elixir & Phoenix: Scalable Backend Development 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Elixir & Phoenix: Scalable Backend Development 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Phoenix 프로젝트 설정과 구조
  2. 라우팅, 컨트롤러 및 플러그
  3. 뷰, 템플릿 및 LiveView 기초
  4. Phoenix Channels로 실시간 기능 구현하기
← Elixir & Phoenix: Scalable Backend Development(으)로 돌아가기