webman/push,用户端一直在线从未下线问题

邹意

问题描述

网页使用push插件链接websocket,后端只用来统计在线人数问题

微信内打开网页,然后直接将微信至于后台运行,过几秒后运行php start.php connections发现websocket已经断开链接,而$result = $api->get('/channels')返回的数据时好时坏,好的时候应该无在线用户,坏的时候就显示还有用户在线,当坏的时候就会导致此用户一直在线,不管此用户再次打开网页然后关闭,都会导致此用户无法下线。

这问题纠结很久了只是一直没找到原因复现,比如某天一共几十人在线,后面就一直卡起10多人一直在线未离线

为此你搜索到了哪些方案及不适用的原因

心跳的原理是前端发送给后端,后端然后响应,有没得撒办法后端主动发起心跳判断前端是否在线然后断开链接,但是新的问题就是如果前端在线人数很多的话后端不是忙死了

449 1 0
1个回答

walkor 打赏

还是那个大屏项目么?
有问题的时候直接用脚本手动调用接口 $api->get('/channels') 查看在线数。
排除你大屏显示在线数代码有什么bug。

  • 邹意 2024-06-04

    就是那个大屏,我专门写了个接口只返回$api->get('/channels')数据用于跟 php start.php connections的数据对比,问题是这两个数据都对不上
    大屏的在线人数也是直接 $api->get('/channels') 出来的所以不会出错
    我专门录了个视频复现问题总长4分钟:http://hbjskangyang.com/webman.mp4 老大又空就看哈,没空的话我自己在研究研究

  • walkor 2024-06-04

    push服务端代码没多少,你打日志看下吧

×
🔝