2014-02-19 79 views

回答

1

我在薄冰這裏,但你應該能夠找到斷開的原因。

那是什麼的source做:

socket.emit('disconnect', packet.reason || 'packet'); 

因此,檢查是否有針對斷開的理由。

+0

socket.emit函數是當服務器將數據返回給客戶端時,不是嗎?我在我的socket.on(「disconnect」...)函數裏面能夠區分。雖然看源代碼,它看起來像是一個超級簡單的補丁來添加此功能... –

+0

啊,好的。對不起,我回答了錯誤的問題... – CFrei

+0

看起來你確實是對的!它沒有記錄,但斷開處理程序可以採取「理由」的說法。不幸的是,它沒有記錄它可能有什麼值... –

0

很奇怪這些沒有記錄,但你可以通過反覆試驗找出它們。例如,在停止服務器時,斷開客戶端和'運輸關閉'時,我會'強迫關閉'。儘管如此,超時也許是另一回事。

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); 
    } 
});