我怎么知道菲尼克斯频道的连接数量?

asi*_*niy 3 elixir websocket phoenix-framework

我有一个非常简单的聊天应用程序,我想在用户退出页面时(即terminate/2连接)实现一些特定的操作.但是,如果没有其他人连接到此主题,我想实施此操作.

我怎么能这样做?

Pat*_*ity 7

这可能听起来像一个微不足道的问题,但事实并非如此.您需要处理连接问题等.幸运的是,这是一个常见的问题,有一个标准的解决方案,它与凤凰捆绑 - Phoenix.Presence.它将允许您可靠地跟踪给定主题的在线用户.

按照此处的步骤设置Presence:https://hexdocs.pm/phoenix/Phoenix.Presence.html

然后在terminate/2回调中,您可以检查是否所有用户都离开了主题

if Presence.list(socket) |> Enum.empty? do
  # do something
end
Run Code Online (Sandbox Code Playgroud)