如果node.js服务器和客户端之间的链接断开,并且挂起事件尚未被超时触发,是否有任何方法可以检测客户端发出的特定事件是否无法由Socket.IO传送到服务器端?
答案 0 :(得分:1)
我对此深入研究,因为我不是socket.io或node.js的专家。
sockets.io摘要用于连接服务器的方法,具体取决于浏览器功能。默认是使用WebSockets(HTML5)。
然而,服务器端的sockets.io附加到node.js的web服务器,因此它将始终使用TCP,因为这是HTTP运行的。因此,无论客户端使用哪种方法,它都将始终使用TCP。所以你不必担心UDP套接字。TCP理论上会检查每个数据包是否到达,因此TCP应该将连接错误冒泡到socket.io库。所以你可能会尝试类似的东西:
<script>
var socket = io.connect('http://localhost/');
socket.on('error', function (message) {
alert( 'error in transport: ' + message );
});
顺便说一句,我自己没试过,但是我读了socket.io.js的代码(你应该通过浏览器找到它,因为这是由socket.io动态创建的,具体取决于传输的配置,似乎对我来说,看看使用publish()发出了哪些事件。错误也应该触发断开连接,重新连接序列,但是'close'不会触发,直到它绝对关闭(它看起来对我来说)可能需要一些时间。但看起来error
应立即触发。