Mevcudiyet ve Canlı Veri Güncellemeleri
Uygulamalarınıza mevcudiyet takibi ekleyin ve dinamik kullanıcı arayüzleri için canlı veri güncellemelerini yönetin.
Mevcudiyet ve Canlı Veri Güncellemeleri, CoddyKit'te ücretsiz bir Elixir & Phoenix: Scalable Backend Development dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Elixir & Phoenix: Scalable Backend Development öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Elixir & Phoenix: Scalable Backend Development kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
What is User Presence?
In real-time applications, presence refers to tracking who is currently online, active, or viewing a specific resource.
- Think of a chat application showing 'online' status.
- Or a collaborative document editor indicating who else is viewing or editing.
- It's crucial for dynamic, interactive user interfaces.
Phoenix.Presence Explained
Phoenix Framework provides a powerful, built-in module called Phoenix.Presence to manage presence information.
- It leverages Elixir's concurrency and distribution features.
- It automatically handles users joining, leaving, and even network disconnections.
- This makes building robust presence features much simpler.
Integrating Presence in Channels
To use Phoenix.Presence, you typically integrate it into your Phoenix Channel modules.
First, ensure your UserSocket defines a pubsub_server (e.g., MyApp.PubSub). Then, within your channel module, you add use Phoenix.Presence.
This mixin provides helpers for tracking and retrieving presence data.
Tracking Users with `track/3`
The core function for adding a user to presence is Phoenix.Presence.track/3.
- It takes the socket, a unique key (e.g., user ID), and metadata (e.g., username, status).
- You usually call this in your channel's
join/3callback. - When a user joins a channel, they are tracked; when they leave, their presence is automatically removed.
Example: Basic Presence Track
Let's see how track/3 is called when a user joins a channel. We'll simulate a socket for this example.
defmodule MyRoomChannel do
use Phoenix.Channel
use Phoenix.Presence
@impl true
def join("room:lobby", _payload, socket) do
# In a real app, user_id would come from auth
user_id = "user_#{System.unique_integer([:positive])}"
metadata = %{username: "Guest_#{user_id}", status: "online"}
# Track the user's presence for this topic
Phoenix.Presence.track(socket, user_id, metadata)
IO.puts "User #{user_id} joined and tracked in room:lobby"
{:ok, socket}
end
# Minimal run_example to simulate join
def run_example do
mock_socket = %{topic: "room:lobby", assigns: %{}}
join("room:lobby", %{}, mock_socket)
end
end
MyRoomChannel.run_example()Accessing Presence Information
Once users are tracked, you can retrieve their presence information:
Phoenix.Presence.list(socket): Returns a map of all presences for the channel's topic.Phoenix.Presence.get_by_key(socket, user_key): Retrieves presence data for a specific user key.
These functions allow you to build dynamic UI elements based on who is online.
Live Data Updates Concept
Beyond just knowing who is online, real-time apps often need to push live data updates to clients.
- This could be a new chat message, a score update in a game, or a change in a shared item's status.
- The key is to send structured data to all connected clients on a specific channel topic.
- Clients then receive this data and update their UI accordingly.
Broadcasting Data with `broadcast!`
You can send live data updates using the broadcast!/3 function (or push/3 for direct messages) from your channel or another process.
broadcast!(socket, "event_name", %{data: "payload"}): Sends an event and payload to all clients subscribed to thesocket's topic.- The
"event_name"helps clients differentiate between types of updates.
This is how you keep all connected clients in sync with server-side changes.
Example: Broadcasting Live Data
Here's how you might broadcast a new message to all clients in a room. We simulate the broadcast call.
defmodule MyDataUpdater do
# We use Phoenix.Channel for its broadcast! helper
use Phoenix.Channel
# Function to simulate sending an update
def send_new_message(topic, sender, text) do
event = "new_message"
payload = %{sender: sender, text: text, timestamp: System.system_time(:second)}
# In a real app, you'd call broadcast! from a channel context
# or use Phoenix.PubSub.broadcast from a GenServer.
# For this runnable example, we'll just demonstrate the payload.
IO.puts "Simulating broadcast to '#{topic}' with event '#{event}' and payload:"
IO.inspect payload
:ok
end
# To run this example
def run_example do
send_new_message("room:lobby", "Alice", "Hello everyone!")
end
end
MyDataUpdater.run_example()Presence & Updates Check
Which of the following statements about Phoenix.Presence and live data updates are TRUE?
Summary: Presence & Live Data
Great job! You've learned how Phoenix.Presence simplifies tracking user activity in real-time applications.
- We covered using
Phoenix.Presence.track/3to mark users as present. - You also saw how to retrieve presence information with
list/1andget_by_key/2. - Finally, we explored sending dynamic live data updates to clients using
broadcast!/3for interactive UIs.
These tools are fundamental for building engaging real-time features!
Sıkça Sorulan Sorular
“Mevcudiyet ve Canlı Veri Güncellemeleri” dersi ücretsiz mi?
Evet — “Mevcudiyet ve Canlı Veri Güncellemeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Elixir & Phoenix: Scalable Backend Development kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Elixir & Phoenix: Scalable Backend Development kursu toplamda 4 dersten oluşur.
“Mevcudiyet ve Canlı Veri Güncellemeleri” dersinde ne öğreneceğim?
Uygulamalarınıza mevcudiyet takibi ekleyin ve dinamik kullanıcı arayüzleri için canlı veri güncellemelerini yönetin. Elixir & Phoenix: Scalable Backend Development ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Elixir & Phoenix: Scalable Backend Development öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Elixir & Phoenix: Scalable Backend Development, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Mevcudiyet ve Canlı Veri Güncellemeleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Elixir & Phoenix: Scalable Backend Development dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Elixir & Phoenix: Scalable Backend Development dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Phoenix Channels'a Giriş
- Yayınlama ve Pub/Sub Mesajlaşması
- Mevcudiyet ve Canlı Veri Güncellemeleri
- Kanal Kimlik Doğrulama ve Yetkilendirme