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 № 1Se 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