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