2
服務器端斷開連接事件似乎觸發斷開連接是否由於超時,或者是由於用戶離開頁面而客戶端故意發送斷開連接事件。有沒有辦法區分這兩個?disconnect事件:區分故意與超時
服務器端斷開連接事件似乎觸發斷開連接是否由於超時,或者是由於用戶離開頁面而客戶端故意發送斷開連接事件。有沒有辦法區分這兩個?disconnect事件:區分故意與超時
我在薄冰這裏,但你應該能夠找到斷開的原因。
那是什麼的source做:
socket.emit('disconnect', packet.reason || 'packet');
因此,檢查是否有針對斷開的理由。
很奇怪這些沒有記錄,但你可以通過反覆試驗找出它們。例如,在停止服務器時,斷開客戶端和'運輸關閉'時,我會'強迫關閉'。儘管如此,超時也許是另一回事。
socket.on('disconnect', function(reason) {
if (reason === 'forced close') {
console.log('socket was disconnected by client');
}
if (reason === 'transport close') {
console.log('socket was disconnected by server');
}
else {
console.log('socket was disconnected for reason: ' + reason);
}
});
socket.emit函數是當服務器將數據返回給客戶端時,不是嗎?我在我的socket.on(「disconnect」...)函數裏面能夠區分。雖然看源代碼,它看起來像是一個超級簡單的補丁來添加此功能... –
啊,好的。對不起,我回答了錯誤的問題... – CFrei
看起來你確實是對的!它沒有記錄,但斷開處理程序可以採取「理由」的說法。不幸的是,它沒有記錄它可能有什麼值... –