我有一个非常简单的聊天应用程序,我想在用户退出页面时实现一些特定的操作(即terminate/2
连接)。但是,如果没有其他人连接到此主题,我想实施此操作。
我怎么能这样做?
答案 0 :(得分:7)
这听起来像是一个微不足道的问题,但事实并非如此。您需要处理连接问题等。幸运的是,这是一个常见的问题,有一个标准的解决方案,它与凤凰捆绑 - Phoenix.Presence
。它将允许您可靠地跟踪给定主题的在线用户。
按照此处的步骤设置在线状态:https://hexdocs.pm/phoenix/Phoenix.Presence.html
然后在您的terminate/2
回调中,您可以检查是否所有用户都使用
if Presence.list(socket) |> Enum.empty? do
# do something
end