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

时间:2017-01-09 16:42:47

标签: websocket elixir phoenix-framework

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

我怎么能这样做?

1 个答案:

答案 0 :(得分:7)

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

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

然后在您的terminate/2回调中,您可以检查是否所有用户都使用

离开主题
if Presence.list(socket) |> Enum.empty? do
  # do something
end