Socket.IO故障检测

如果node.js服务器和客户端之间的链接断开,并且断开连接事件还没有被超时触发,是否有任何方法可以检测客户端发出的特定事件是否不能传递给服务器端由Socket.IO?

我深入了解了这一点,因为我不是socket.io或node.js的专家。

  1. 哪种types的套接字?

sockets.io摘要根据浏览器的function,它使用哪种方法连接到服务器。 默认是使用WebSockets(HTML5)。

然而服务器端的sockets.io附加到node.js的web服务器,所以它总是使用TCP,因为这是HTTP运行的。 因此,无论客户端使用哪种方法,都会使用TCP。 所以你不需要担心UDP套接字。

  1. 是socket.io发射错误?

TCP从理论上检查每个数据包到达,所以TCP应该将连接错误冒泡到socket.io库。 所以你可以尝试这样的:

<script> var socket = io.connect('http://localhost/'); socket.on('error', function (message) { alert( 'error in transport: ' + message ); }); 

顺便说一句,我没有尝试过这个我自己,但我读了socket.io.js的代码(你应该通过浏览器find,因为这是由socket.iodynamic创build的,取决于传输的configuration,在我看来)看到使用publish()发送哪些事件。 一个错误也应该触发断开连接,重新连接序列,但是“closures”不会触发,直到它完全closures(这在我看来),这可能需要一些时间。 但是看起来这个error应该立即开始。

  1. 否则我有两个想法:
    一个。 使用node.js socket.setTimeOut来设置一个更短的超时时间,并看看会发生什么,b。 或者尝试用某种方法在套接字上强制错误,即在读取循环(必须具有这种function,因为您大概使用非阻塞套接字)之间进行读取操作时,请尝试写入套接字。