Ich bin ein WhatsApp-Klon erstellen und Probleme mit Presence herauszufinden.Phoenix Presence track Benutzer über mehrere Kanäle mit wechselnden Meta
Ich habe zwei Kanal:
channel "chats:*", Typi.ChatChannel
channel "users:*", Typi.UserChannel
Der Benutzer immer users:...
Kanal verbunden ist, wenn er in der App ist, und auf beitreten beginne ich seine Anwesenheit Tracking:
def join("users:" <> user_id, _payload, socket) do
send self(), :after_join
{:ok, socket}
end
def handle_info(:after_join, socket) do
Presence.track(socket, socket.assigns.current_user.id, %{})
{:noreply, socket}
end
Wenn Benutzer ich chat_id
Meta schließt sich einige Chat hinzufügen:
def join("chats:" <> chat_id, _payload, socket) do
send self(), :after_join
{:ok, assign(socket, :current_chat, chat)}
end
def handle_info(:after_join, socket) do
Presence.track(socket, socket.assigns.current_user.id, %{
chat_id: socket.assigns.current_chat.id
})
{:noreply, socket}
end
Whe Wenn der Benutzer den Chat verlässt, möchte ich Meta-Informationen löschen, aber die Anwesenheit beibehalten. Wie kann ich das machen?
Dank