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

Websocket 我怎么知道菲尼克斯频道的连接数量?,websocket,elixir,phoenix-framework,Websocket,Elixir,Phoenix Framework,我有一个非常简单的聊天应用程序,我想在用户退出页面时实现一些特定的操作(即,terminate/2connection)。但是,如果没有其他人与此主题相关,我想实施此操作 我怎么能做到这一点呢?这听起来像是一个微不足道的问题,但事实并非如此。您需要处理连接问题等。幸运的是,这是一个非常常见的问题,有一个标准的解决方案,它与Phoenix捆绑在一起-Phoenix.Presence。它将允许您可靠地跟踪给定主题的在线用户 按照此处的步骤设置状态: 然后,在terminate/2回调中,您可以检查是

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


我怎么能做到这一点呢?

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

按照此处的步骤设置状态:

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

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

我自己还没有真正研究过,但我知道你可以通过Justin跟踪有多少人连接到一个给定的频道,这个解决方案看起来不错。谢谢如果我的
do something
也是异步的,那就特别困难:)谢谢!