2013-04-22 130 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

相关问题