关于phpsocket.io客户端收不到请求的问题

guofei886

使用thinkphp5.0整合的phpsocket.io的叫号的项目,有呼叫端和操作端,呼叫端展示队列和呼叫播放,客户端总共20多个。

某些呼叫端在运行一段时间后,会无法响应操作的推送。服务端和客户端都没有报错,客户端的状态还是连接状态。

这种情况刷新客户端,或者,重启服务端都能解决,找不到原因,求大神指点解决或寻找问题的思路~

2247 3 0
3个回答

guofei886

补充一下,服务端是windows的,php版本5.5.9,workman版本3.5.31,phpsocket.io的版本应该是v1.3.0

  • 静默 2020-09-29

    怎么感觉像是客户端bug

  • guofei886 2020-09-29

    客户端的JS中没有报错,而且我重启服务端以后,客户端也可以恢复正常

  • 静默 2020-09-29

    有些客户端有问题,并且客户端刷新后就好了,说明服务端应该没问题。这个不好查了,得记录日志,看走到哪里没反应。

  • guofei886 2020-09-29

    我在客户端加了很多js输出,没有异常,在客户端没反映的时候,不刷新客户端,重启服务端也能解决问题,所以我怀疑是连接的问题更大一些,这方面又不熟悉,分析不出来。

  • six 2020-10-01

    服务端记录日志看下呢,看下运行到了哪里没之行了

  • guofei886 2020-10-01

    服务端和客户端都有日志,没有发现程序错误。客户端的呼叫端运行在安卓电视中,在安卓的webview中运行,操作端是浏览器。一个操作端对应两个呼叫端,其中一个是单独的,一个是汇总多个操作端的。经常是一个好使一个不好使。

  • guofei886 2020-10-01

    不好使的那个队列数据量多一些,但最多也不超过100人

  • six 2020-10-03

    workerman在windows下连接数做多支持256,感觉是连接数超过了256.

  • six 2020-10-03

    建议上linux系统

  • guofei886 2020-10-04

    服务器上面还有其它服务,不好换系统,这情况上虚拟机能不能行。
    客户端不到30个,像这种情况如果客户端反复刷新的话,也应该属于是一次连接的吧,不应该会超过256吧。
    还是说每次连接断开再重连,之前的连接没有释放掉。
    有没有什么方法能判断连接的状态,在出现情况时能自动重连也行

guofei886

我查资料说,phpsocket.io是自带心跳的,当个别客户端没有响应时,我重启服务端,客户端也恢复正常了。
有没有这种情况,客户端还保持着连接,但收不到推送。
这种情况怎么能测试出来呢。
服务端或是客户端的,emit方法有没有什么返回值,能判断出对方有没有收到推送的状态呢,求大神指点

  • 暂无评论
guofei886

又想到了一点,我在单独测试的时候,是很难发生类似的问题的,用程序模拟推送和呼叫,挂很久都不会出问题。实际运行时个别客户端就会出现问题,页面中有disconnect,触发后页面上会显示一个断开的标志,这个并没有触发,但就是收不到推送。刷新客户端或重启服务端都能解决,这种情况是客户端超时吗?

  • 暂无评论
年代过于久远,无法发表回答
🔝