使用tcp協(xié)議 ,設(shè)備斷開后沒有觸發(fā)onClose方法,進行下線,當服務(wù)端停止后,才會觸發(fā)onClose方法 ,跪求大佬解答
大佬,沒太看懂文檔,按照我的理解,是客戶端心跳中斷后,應(yīng)該觸發(fā)onClose ,但是現(xiàn)在只有服務(wù)進程徹底斷開才會觸發(fā)onClose
正常的情況客戶端斷開連接會向服務(wù)端發(fā)送一個fin包,服務(wù)端收到fin包后得知客戶端連接斷開,則立刻觸發(fā)onClose事件回調(diào)。
但是有些極端情況如客戶端掉電、網(wǎng)絡(luò)關(guān)閉、拔網(wǎng)線、路由故障等,這些極端情況客戶端無法發(fā)送fin包給服務(wù)端,服務(wù)端便無法知道連接已經(jīng)斷開。如果客戶端與服務(wù)端定時有心跳數(shù)據(jù)傳輸,則會比較及時的發(fā)現(xiàn)連接斷開,觸發(fā)onClose事件回調(diào)。
以上摘自手冊,解釋了為什么斷電后無法立刻觸發(fā)onClose。
設(shè)置好 $gateway->pingNotResponseLimit 不為0,然后restart重啟GatewayWorker,注意是restart,不是reload。