2013-05-12 55 views
0

有了這段代碼,我故意創建一些錯誤,爲什麼nodejs/socket.io停止響應客戶端?請注意,nodejs進程仍在運行,沒有任何崩潰或退出。node.js(socket.io)在* catch *錯誤後停止與客戶端通信

socket.on('message', function (data) { 
    var d = domain.create(); 

    d.on('error', function(err) { 
     socket.emit('error', err.message); 
    }); 

    d.run(function() { 
     execError(); 
    } 
}); 
+0

我可以重現它,它似乎是一個錯誤,但我還沒有看過,非常緊密地(還)。 – robertklep 2013-05-12 16:15:47

+0

更新:我可以接收數據,但不能發送。 – 2013-05-13 12:41:19

+0

更新3: 如果在d.run()socket.io的根目錄中存在錯誤,則停止響應,並在一段時間後重新連接。但是,如果錯誤發生在相同的d.run()內部,但在類似的範圍內:redclient.hget('hkey','key',d.bind(function(err,block){ERROR(); }); socket.io發現錯誤並保持響應,因爲什麼也沒有發生。 – 2013-05-16 11:55:06

回答