使用thinkphp5.0整合的phpsocket.io的叫号的项目,有呼叫端和操作端,呼叫端展示队列和呼叫播放,客户端总共20多个。
某些呼叫端在运行一段时间后,会无法响应操作的推送。服务端和客户端都没有报错,客户端的状态还是连接状态。
这种情况刷新客户端,或者,重启服务端都能解决,找不到原因,求大神指点解决或寻找问题的思路~
补充一下,服务端是windows的,php版本5.5.9,workman版本3.5.31,phpsocket.io的版本应该是v1.3.0
怎么感觉像是客户端bug
客户端的JS中没有报错,而且我重启服务端以后,客户端也可以恢复正常
有些客户端有问题,并且客户端刷新后就好了,说明服务端应该没问题。这个不好查了,得记录日志,看走到哪里没反应。
我在客户端加了很多js输出,没有异常,在客户端没反映的时候,不刷新客户端,重启服务端也能解决问题,所以我怀疑是连接的问题更大一些,这方面又不熟悉,分析不出来。
服务端记录日志看下呢,看下运行到了哪里没之行了
服务端和客户端都有日志,没有发现程序错误。客户端的呼叫端运行在安卓电视中,在安卓的webview中运行,操作端是浏览器。一个操作端对应两个呼叫端,其中一个是单独的,一个是汇总多个操作端的。经常是一个好使一个不好使。
不好使的那个队列数据量多一些,但最多也不超过100人
workerman在windows下连接数做多支持256,感觉是连接数超过了256.
建议上linux系统
服务器上面还有其它服务,不好换系统,这情况上虚拟机能不能行。 客户端不到30个,像这种情况如果客户端反复刷新的话,也应该属于是一次连接的吧,不应该会超过256吧。 还是说每次连接断开再重连,之前的连接没有释放掉。 有没有什么方法能判断连接的状态,在出现情况时能自动重连也行
我查资料说,phpsocket.io是自带心跳的,当个别客户端没有响应时,我重启服务端,客户端也恢复正常了。 有没有这种情况,客户端还保持着连接,但收不到推送。 这种情况怎么能测试出来呢。 服务端或是客户端的,emit方法有没有什么返回值,能判断出对方有没有收到推送的状态呢,求大神指点
又想到了一点,我在单独测试的时候,是很难发生类似的问题的,用程序模拟推送和呼叫,挂很久都不会出问题。实际运行时个别客户端就会出现问题,页面中有disconnect,触发后页面上会显示一个断开的标志,这个并没有触发,但就是收不到推送。刷新客户端或重启服务端都能解决,这种情况是客户端超时吗?
补充一下,服务端是windows的,php版本5.5.9,workman版本3.5.31,phpsocket.io的版本应该是v1.3.0
怎么感觉像是客户端bug
客户端的JS中没有报错,而且我重启服务端以后,客户端也可以恢复正常
有些客户端有问题,并且客户端刷新后就好了,说明服务端应该没问题。这个不好查了,得记录日志,看走到哪里没反应。
我在客户端加了很多js输出,没有异常,在客户端没反映的时候,不刷新客户端,重启服务端也能解决问题,所以我怀疑是连接的问题更大一些,这方面又不熟悉,分析不出来。
服务端记录日志看下呢,看下运行到了哪里没之行了
服务端和客户端都有日志,没有发现程序错误。客户端的呼叫端运行在安卓电视中,在安卓的webview中运行,操作端是浏览器。一个操作端对应两个呼叫端,其中一个是单独的,一个是汇总多个操作端的。经常是一个好使一个不好使。
不好使的那个队列数据量多一些,但最多也不超过100人
workerman在windows下连接数做多支持256,感觉是连接数超过了256.
建议上linux系统
服务器上面还有其它服务,不好换系统,这情况上虚拟机能不能行。
客户端不到30个,像这种情况如果客户端反复刷新的话,也应该属于是一次连接的吧,不应该会超过256吧。
还是说每次连接断开再重连,之前的连接没有释放掉。
有没有什么方法能判断连接的状态,在出现情况时能自动重连也行
我查资料说,phpsocket.io是自带心跳的,当个别客户端没有响应时,我重启服务端,客户端也恢复正常了。
有没有这种情况,客户端还保持着连接,但收不到推送。
这种情况怎么能测试出来呢。
服务端或是客户端的,emit方法有没有什么返回值,能判断出对方有没有收到推送的状态呢,求大神指点
又想到了一点,我在单独测试的时候,是很难发生类似的问题的,用程序模拟推送和呼叫,挂很久都不会出问题。实际运行时个别客户端就会出现问题,页面中有disconnect,触发后页面上会显示一个断开的标志,这个并没有触发,但就是收不到推送。刷新客户端或重启服务端都能解决,这种情况是客户端超时吗?