Websocket 计算Phoenix应用程序中打开的套接字和通道连接数
在Phoenix应用程序中是否有一种相对简单、有文档记录的方法来读取在任何给定时间当前打开的活动套接字和通道的数量?更具体地说,是否可以按主题和其他通道连接元数据过滤此数据 我的用例用于分析到后端的活动连接 谢谢你的建议 您正在寻找的。从文件中: 提供对流程和通道的状态跟踪 这种行为提供了呈现功能,例如获取给定主题的呈现,以及处理实时发生的加入和离开事件的差异。使用此模块定义一个主管,并允许调用模块实现启动跟踪程序以处理状态信息的行为Websocket 计算Phoenix应用程序中打开的套接字和通道连接数,websocket,elixir,phoenix-framework,otp,phoenix-channels,Websocket,Elixir,Phoenix Framework,Otp,Phoenix Channels,在Phoenix应用程序中是否有一种相对简单、有文档记录的方法来读取在任何给定时间当前打开的活动套接字和通道的数量?更具体地说,是否可以按主题和其他通道连接元数据过滤此数据 我的用例用于分析到后端的活动连接 谢谢你的建议 您正在寻找的。从文件中: 提供对流程和通道的状态跟踪 这种行为提供了呈现功能,例如获取给定主题的呈现,以及处理实时发生的加入和离开事件的差异。使用此模块定义一个主管,并允许调用模块实现启动跟踪程序以处理状态信息的行为 基本上,您应该根据您的需要实施Phoenix.Presenc
基本上,您应该根据您的需要实施
Phoenix.Presence
行为(文档中有一个几乎准备就绪的示例)和Phoenix.Tracker
。谢谢,我已经阅读了Presence
文档,它似乎是为了按主题跟踪Presence。但是,如果我有属于同一类别的各种不同主题(例如用户:1
,用户:2
),是否可以跟踪用户
类别的存在?我在文档中没有看到任何迹象表明这一点。您需要实现自己的逻辑跟踪。我能够通过创建一个指定的main
频道来解决这个问题,除了连接到自己的用户频道(例如user:23
)。然后,我截获了主频道中的状态_diff
等事件,并仅向管理员发送更新,因为普通用户不应该能够看到其他用户的状态信息,至少在我的应用程序中涉及到分析。我仍然觉得这个解决方案是一种权宜之计,有更好的解决方案可用,但我还没有找到任何类似的文档示例。@Murcielago看看我的repo,尽管这是我第一次尝试在ets
中实现Phoenix存储套接字信息的跟踪器。关于阅读这些信息,有一篇很棒的文章,代码非常简短:`def count do acc=fn{channel,{u},map->map.update(map,channel,1,&(&1+1))end:ets.foldl(acc,%%{},MyGreatApp.PubSub.Local0)end`