/ / Come posso iscrivermi a un canale da un processo interno? (cercando di mantenere una connessione persistente) - elisir, phoenix-framework

Come posso iscrivermi a un canale da un processo interno? (cercando di mantenere una connessione persistente) - elisir, phoenix-framework

Ho una chat room, quando un utente ha una presa collegata, trasmettiamo a quello. Ma quando l'utente non è connesso, voglio registrare le informazioni su ciò che l'utente ha mancato (messaggi, ecc.)

Inizialmente pensavo di avere un GenServer che accetta e memorizza i dati fino a quando l'utente torna online.

Come posso sottoscrivere un processo interno a un canale?

Qualcosa come questo App.RoomChannel.join("rooms:1", _, self()) (questo non funzionerà, dato che l'ultimo param deve essere un socket)

risposte:

1 per risposta № 1

Se vuoi monitorare alcuni metadati relativi ainformazioni utente come (il dispositivo o il tempo in cui l'utente è online, qualche messaggio di notifica ...), è possibile utilizzare Phoenix.Presence per tenere traccia di tali informazioni.

https://hexdocs.pm/phoenix/Phoenix.Presence.html

Se vuoi iscriverti a un argomento del canale. Puoi usare:

YourApp.Endpoint.subscribe("channel_topic")

Seguire le istruzioni da Phoenix.Channel Iscrizione a argomenti esterni