2013-04-22 125 views
1

我正在使用socket.io和appjs開發一個應用程序。當他通過啓動應用程序的兩個實例而導致EADDRINUSE時,我無法通知用戶,而他不應該這樣做。如何檢測是否連接了socket.io服務器?

Socket.io確實檢測到EADDRINUSE,但我只收到寫入控制檯的警告(不知道是stdout還是stderr)。我想要一個異常,一個回調,我有一個err參數,或者至少有一個標誌來檢測連接是否正常。

只是爲了澄清,我試圖從服務器端做到這一點。在客戶端,我已經有客戶端 - 服務器連接的超時。

我該怎麼做?

回答

2

EADDRINUSE是由網絡模塊發出的錯誤。 Docs here:http://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback

總之,您需要提供一個回調到.on('error'來處理錯誤。

server.on('error', function (e) { 
    if (e.code == 'EADDRINUSE') { 
    console.log('Address in use'); 
    } 
}); 
+0

添加一個錯誤處理程序確實給我帶來了錯誤。這是非常有道理的,因爲socket.io是異步工作的。謝謝 – 2013-04-24 13:24:53

相關問題