【发布时间】:2023-03-07 02:26:01
【问题描述】:
我有一个聊天室,当用户有一个连接的套接字时,我们会向它广播。但是当用户未连接时,我想记录有关用户错过的信息(消息等)
我最初的想法是要有一个 GenServer 来接受和存储数据,直到用户重新上线。
如何让内部流程订阅频道?
类似App.RoomChannel.join("rooms:1", _, self()) 的东西(这行不通,因为最后一个参数必须是 Socket)
【问题讨论】:
我有一个聊天室,当用户有一个连接的套接字时,我们会向它广播。但是当用户未连接时,我想记录有关用户错过的信息(消息等)
我最初的想法是要有一个 GenServer 来接受和存储数据,直到用户重新上线。
如何让内部流程订阅频道?
类似App.RoomChannel.join("rooms:1", _, self()) 的东西(这行不通,因为最后一个参数必须是 Socket)
【问题讨论】:
如果您想跟踪有关用户信息的一些元数据,例如(设备或用户在线时间、一些消息通知...),您可以使用 Phoenix.Presence 跟踪该信息。
https://hexdocs.pm/phoenix/Phoenix.Presence.html
如果您想订阅频道主题。您可以使用:
YourApp.Endpoint.subscribe("channel_topic")
听从Phoenix.ChannelSubscribing to external topics的指示
【讨论】:
App.Endpoint.subscribe 是我想要的。谢谢!