我想在我的网站上有一个在线用户计数器,起初我想在每个页面都包含一个websocket片段,但这对我来说似乎有点矫枉过正,因为我不需要每半年都有一个持续的乒乓球第二个,而是每五秒钟ping一次(例如)。 出于性能原因,我猜最好的方法是让客户端将ping发送到服务器,而最后一个只接收它而不发回任何东西。 我也想采用带宽消耗或用户在线时长的指标。
你会怎么做? Websocket或每隔X秒在某处发布一个JSON?您能想到的任何开箱即用的解决方案? 感谢
答案 0 :(得分:0)
我认为使用网络套接字可以获得最准确的结果。这是一个非常高级的实现,你可以填补。
套接字具有连接,断开连接和错误的事件,因此您只需要在套接字连接事件上注册用户统计信息。
取消注册套接字断开事件的用户统计信息。
套接字连接事件可以发送用户访问的页面等信息以及您希望发送的任何其他信息。
不需要任何ping / pong代码,套接字事件会自行处理所有内容。
您可以从主服务器卸载此连接,并拥有一个单独的服务器来收集用户统计信息。
如果您已妥善维护代码,则无需为每个页面添加套接字代码段。例如,您只需将其添加到模板中即可。
另一个更便宜但不是非常准确的解决方案可能是检查会话文件,比如每15分钟一次。在过去15分钟内未访问的所有会话文件都是断开连接的用户,因此从会话文件总数中减去它们,您将获得在过去15分钟内在线的用户。我不确定如何使用这种方法收集详细的统计数据。