使用thinkphp5.0整合的phpsocket.io的叫號的項目,有呼叫端和操作端,呼叫端展示隊列和呼叫播放,客戶端總共20多個。
某些呼叫端在運行一段時間后,會無法響應操作的推送。服務端和客戶端都沒有報錯,客戶端的狀態(tài)還是連接狀態(tài)。
這種情況刷新客戶端,或者,重啟服務端都能解決,找不到原因,求大神指點解決或尋找問題的思路~
補充一下,服務端是windows的,php版本5.5.9,workman版本3.5.31,phpsocket.io的版本應該是v1.3.0
我在客戶端加了很多js輸出,沒有異常,在客戶端沒反映的時候,不刷新客戶端,重啟服務端也能解決問題,所以我懷疑是連接的問題更大一些,這方面又不熟悉,分析不出來。
服務端和客戶端都有日志,沒有發(fā)現(xiàn)程序錯誤??蛻舳说暮艚卸诉\行在安卓電視中,在安卓的webview中運行,操作端是瀏覽器。一個操作端對應兩個呼叫端,其中一個是單獨的,一個是匯總多個操作端的。經(jīng)常是一個好使一個不好使。
服務器上面還有其它服務,不好換系統(tǒng),這情況上虛擬機能不能行。
客戶端不到30個,像這種情況如果客戶端反復刷新的話,也應該屬于是一次連接的吧,不應該會超過256吧。
還是說每次連接斷開再重連,之前的連接沒有釋放掉。
有沒有什么方法能判斷連接的狀態(tài),在出現(xiàn)情況時能自動重連也行
我查資料說,phpsocket.io是自帶心跳的,當個別客戶端沒有響應時,我重啟服務端,客戶端也恢復正常了。
有沒有這種情況,客戶端還保持著連接,但收不到推送。
這種情況怎么能測試出來呢。
服務端或是客戶端的,emit方法有沒有什么返回值,能判斷出對方有沒有收到推送的狀態(tài)呢,求大神指點
又想到了一點,我在單獨測試的時候,是很難發(fā)生類似的問題的,用程序模擬推送和呼叫,掛很久都不會出問題。實際運行時個別客戶端就會出現(xiàn)問題,頁面中有disconnect,觸發(fā)后頁面上會顯示一個斷開的標志,這個并沒有觸發(fā),但就是收不到推送。刷新客戶端或重啟服務端都能解決,這種情況是客戶端超時嗎?