webman/push 统计在线人数问题

邹意

问题描述

继续接上一个问题:https://www.workerman.net/q/12834
问题找到了,但是我不清楚subscription_count字段是干嘛的,而且程序里面是对的,但是执行的时候就偏偏并不对

截图

问题就在498行跟499行,当我第一次将微信切换后台断开链接的时候,subscription_count等于1,减1后499行能正常销毁,当我微信第二次切换后台断开链接的时候,subscription_count就变成2了,减1后导致无法进行销毁。
问题也在这,按道理说第一次就已经销毁了,第二次的时候subscription_count应该是重新链接重新赋值应该是等于1不应该等于2,经过测试多往返切换几次subscription_count的值一直在累加并没有真正的销毁

程序代码或配置

截图

操作系统环境及workerman/webman等具体版本

微信内打开网页链接websocket后,然后把微信切换至后台,切换后台后等个几十秒等websocket自动断开链接后在才把微信切回前台
这样来回切换操作个两次就会发现$result = $api->get('/channels')返回的在线用户会一直在线 ,无法再次离线

170 1 0
1个回答

walkor

可能你大屏的连接订阅了对应的频道

  • 邹意 14天前

    大屏是订阅的私有频道:private-daping,所有用户在线是订阅的自己的频道:user-line-xxx,我以上说的subscription_count字段一直累加的问题都是测试的同一个用户同一个频道的情况,我是在调试模式下一直打印$channel变量跟subscription_count

  • 邹意 14天前

    并非后端问题,微信内打开网页后切换微信至后台等断开链接后,再次将微信切换至前台,此时网页会发起两次链接导致subscription_count累加成2(后端调试模式下在订阅频道的函数里面打印得出的结论),微信再次切后台等断开链接后在切换前台,此时网页会发起三次链接导致subscription_count累加成3,以此重复切换就导致subscription_count会越来越大,现在转战研究前端了

🔝