Reaaliaikaiset ominaisuudet Phoenix Channels -kanavilla
Lisää Phoenix-sovellukseesi kaksisuuntainen reaaliaikainen viestintä käyttämällä WebSocketien päällä toimivia Channels-kanavia.
Reaaliaikaiset ominaisuudet Phoenix Channels -kanavilla on ilmainen Elixir ja Phoenix: skaalautuva backend-kehitys-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Elixir ja Phoenix: skaalautuva backend-kehitys-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Elixir ja Phoenix: skaalautuva backend-kehitys-kurssilla on yhteensä 4 oppituntia.
Mitä kanavat ovat?
Phoenixin Channels tarjoaa WebSocketien (varajärjestelyineen) päälle reaaliaikaisen kaksisuuntaisen viestintäkerroksen. Se sopii erinomaisesti chateihin, ilmoituksiin ja reaaliaikaisiin koontinäyttöihin.
Socket-kerros
Asiakkaat muodostavat yhteyden Socket-yhteyteen, joka todentaa yhteyden ja reitittää sen aiheisiin. Se määritellään endpointissa.
socket "/socket", MyAppWeb.UserSocket,
websocket: true,
longpoll: falseUserSocketin määrittäminen
Socket-moduuli määrittää, mitkä kanavat käsittelevät mitäkin aihekuvioita ja miten connect toimii.
defmodule MyAppWeb.UserSocket do
use Phoenix.Socket
channel "room:*", MyAppWeb.RoomChannel
def connect(_params, socket, _info), do: {:ok, socket}
def id(_socket), do: nil
endAiheet ja tilaukset
topic on merkkijono, kuten room:lobby. Asiakkaat liittyvät aiheeseen lähettääkseen ja vastaanottaakseen siihen rajattuja viestejä.
Kanavan luominen
Kanavamoduuli käsittelee join-kutsun ja saapuvat tapahtumat handle_in-funktion avulla.
defmodule MyAppWeb.RoomChannel do
use MyAppWeb, :channel
def join("room:" <> _id, _params, socket) do
{:ok, socket}
end
endSaapuvien viestien käsittely
handle_in/3 reagoi asiakkaiden lähettämiin tapahtumiin. Palauttakaa :noreply tai vastatkaa lähettäjälle.
def handle_in("new_msg", %{"body" => body}, socket) do
broadcast!(socket, "new_msg", %{body: body})
{:noreply, socket}
endLähettäminen aiheeseen
broadcast!/3 lähettää viestin jokaiselle aiheen tilaajalle, mikä mahdollistaa reaaliaikaisen jakelun.
broadcast!(socket, "new_msg", %{body: "Hello everyone"})Vastaaminen lähettäjälle
Palauttakaa {:reply, {:ok, payload}, socket}, jos haluatte vastata vain tapahtuman lähettäneelle asiakkaalle.
def handle_in("ping", _payload, socket) do
{:reply, {:ok, %{pong: true}}, socket}
endLähettäminen palvelimelta
Lähettäkää viesti yhdelle yhteydessä olevalle asiakkaalle push/3-funktion avulla, esimerkiksi asynkronisen työn valmistuttua.
push(socket, "notification", %{text: "Job finished"})JavaScript-asiakas
Selainpuolella Phoenixin JS-asiakas muodostaa yhteyden, liittyy aiheeseen ja kuuntelee tapahtumia.
let channel = socket.channel("room:lobby", {})
channel.join()
channel.on("new_msg", payload => console.log(payload.body))Presence-seuranta
Phoenix.Presence rakentuu Channelsin päälle ja seuraa, ketkä ovat verkossa klusterin eri osissa. Se synkronoi liittymis- ja poistumistapahtumat automaattisesti.
Pikatarkistus
Testatkaa Channels-tietonne.
Kertaus
Lisäsitte sovellukseen reaaliaikaisia ominaisuuksia Channelsin avulla:
- Asiakkaat muodostavat yhteyden Socketiin ja liittyvät aiheisiin
- Kanavat käsittelevät
join- jahandle_in-tapahtumia broadcast!lähettää viestin kaikille, kun taaspush/replykohdistuu yhteen asiakkaaseen- Presence seuraa verkossa olevia käyttäjiä Channelsin päällä
Opi Elixir tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Reaaliaikaiset ominaisuudet Phoenix Channels -kanavilla” ilmainen?
Kyllä – oppitunnin ”Reaaliaikaiset ominaisuudet Phoenix Channels -kanavilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Elixir ja Phoenix: skaalautuva backend-kehitys-kurssin, päivitä CoddyKit PROhon. Elixir ja Phoenix: skaalautuva backend-kehitys-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Reaaliaikaiset ominaisuudet Phoenix Channels -kanavilla”?
Lisää Phoenix-sovellukseesi kaksisuuntainen reaaliaikainen viestintä käyttämällä WebSocketien päällä toimivia Channels-kanavia. Harjoittelet Elixir ja Phoenix: skaalautuva backend-kehitys-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Elixir ja Phoenix: skaalautuva backend-kehitys-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Elixir ja Phoenix: skaalautuva backend-kehitys-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Reaaliaikaiset ominaisuudet Phoenix Channels -kanavilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Elixir ja Phoenix: skaalautuva backend-kehitys-oppitunnilla?
Kyllä. Jokainen Elixir ja Phoenix: skaalautuva backend-kehitys-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Phoenix-projektin määritys ja rakenne
- Reititys, ohjaimet ja Plugs
- Näkymät, mallineet ja LiveView-perusteet
- Reaaliaikaiset ominaisuudet Phoenix Channels -kanavilla