Sanntidsfunksjoner med Phoenix Channels
Legg til toveis sanntidskommunikasjon i Phoenix-appen Deres ved å bruke Channels over WebSockets.
Sanntidsfunksjoner med Phoenix Channels er en gratis leksjon i Elixir og Phoenix: Skalerbar backendutvikling på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Elixir og Phoenix: Skalerbar backendutvikling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Elixir og Phoenix: Skalerbar backendutvikling inneholder totalt 4 leksjoner.
Hva er Channels?
Phoenix Channels tilbyr et sanntidslag for toveis meldingsutveksling over WebSockets (med reservemekanismer). Det passer perfekt for chat, varsler og live-dashbord.
Socket-laget
Klienter kobler til en Socket, som autentiserer tilkoblingen og ruter til emner. Den defineres i endepunktet Deres.
socket "/socket", MyAppWeb.UserSocket,
websocket: true,
longpoll: falseDefinere en UserSocket
Socket-modulen angir hvilke kanaler som håndterer hvilke emnemønstre, og hvordan connect skal fungere.
defmodule MyAppWeb.UserSocket do
use Phoenix.Socket
channel "room:*", MyAppWeb.RoomChannel
def connect(_params, socket, _info), do: {:ok, socket}
def id(_socket), do: nil
endEmner og abonnementer
Et topic er en streng, for eksempel room:lobby. Klienter blir med i et emne for å sende og motta meldinger som er avgrenset til dette emnet.
Opprette en Channel
En kanalmodul håndterer join og innkommende hendelser med handle_in.
defmodule MyAppWeb.RoomChannel do
use MyAppWeb, :channel
def join("room:" <> _id, _params, socket) do
{:ok, socket}
end
endHåndtere innkommende meldinger
handle_in/3 reagerer på hendelser som klienter sender. Returner :noreply, eller svar avsenderen.
def handle_in("new_msg", %{"body" => body}, socket) do
broadcast!(socket, "new_msg", %{body: body})
{:noreply, socket}
endSende kringkasting til et emne
broadcast!/3 sender en melding til ALLE abonnenter av emnet og muliggjør sanntidsdistribusjon til flere mottakere.
broadcast!(socket, "new_msg", %{body: "Hello everyone"})Svare avsenderen
Returner {:reply, {:ok, payload}, socket} for å svare bare klienten som sendte hendelsen.
def handle_in("ping", _payload, socket) do
{:reply, {:ok, %{pong: true}}, socket}
endSende fra serveren
Bruk push/3 for å sende en melding til én tilkoblet klient, for eksempel etter at asynkront arbeid er fullført.
push(socket, "notification", %{text: "Job finished"})JavaScript-klienten
I frontend kobler Phoenix JS-klienten seg til, blir med i et emne og lytter etter hendelser.
let channel = socket.channel("room:lobby", {})
channel.join()
channel.on("new_msg", payload => console.log(payload.body))Sporing av tilstedeværelse
Phoenix.Presence bygger på Channels for å spore hvem som er tilkoblet i klyngen, og synkroniserer automatisk hendelser når brukere blir med eller forlater den.
Kort kontroll
Test kunnskapene Deres om Channels.
Oppsummering
De la til sanntidsfunksjoner med Channels:
- Klienter kobler til en Socket og blir med i topics
- Channels håndterer
join- oghandle_in-hendelser broadcast!distribuerer til flere mottakere, menspush/replyretter seg mot én klient- Presence sporer tilkoblede brukere oppå Channels
Lær deg Elixir med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Sanntidsfunksjoner med Phoenix Channels» gratis?
Ja – hele teksten i «Sanntidsfunksjoner med Phoenix Channels» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Elixir og Phoenix: Skalerbar backendutvikling-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Elixir og Phoenix: Skalerbar backendutvikling inneholder totalt 4 leksjoner.
Hva lærer jeg i «Sanntidsfunksjoner med Phoenix Channels»?
Legg til toveis sanntidskommunikasjon i Phoenix-appen Deres ved å bruke Channels over WebSockets. Du øver på Elixir og Phoenix: Skalerbar backendutvikling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Elixir og Phoenix: Skalerbar backendutvikling?
Ingen tidligere erfaring er nødvendig. Elixir og Phoenix: Skalerbar backendutvikling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Sanntidsfunksjoner med Phoenix Channels»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Elixir og Phoenix: Skalerbar backendutvikling-leksjonen?
Ja. Alle Elixir og Phoenix: Skalerbar backendutvikling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Oppsett og struktur for Phoenix-prosjekter
- Ruting, kontrollere og Plugs
- Visninger, maler og grunnleggende LiveView
- Sanntidsfunksjoner med Phoenix Channels