我正在使用不同的浏览器测试来自客户端的应用程序的重新连接,并观察不同的行为。
步骤:
拔下以太网电缆
我的应用会在收到浏览器丢失的连接事件后立即尝试重新连接。
我知道这可能取决于不同的浏览器行为。我可以从客户端做些什么来克服浏览器怪癖?
答案 0 :(得分:1)
您是否尝试过Offline.js?根据您的最终用例,这可能会为您解决问题。
答案 1 :(得分:1)
您可以收听套接字,当您收听错误时,您可以执行您想要的操作。 JQuery.webSocket对您的情况有帮助。
答案 2 :(得分:1)
使用jQuery
,您可以每隔几秒钟向服务器发送一个AJAX请求,以检查连接状态。
window.myInterval = setInterval(
function() {
$.ajax(
type: "GET",
url: "http://your.server.io/test_url.php",
statusCode: {
503: function() {
alert("Service Unavailable");
// your code
}
}
);
}
, 5000);
很容易调整以捕获连接丢失和备份事件。
window.connectionUp = true;
window.myInterval = setInterval(
function() {
$.ajax(
type: "GET",
url: "http://your.server.io/test_url.php",
statusCode: {
503: function() {
alert("Service Unavailable");
window.connectionUp = false;
// your code
}
200: function() {
alert("Service Available");
if (window.connectionUp = false) {
// reconnect
}
window.connectionUp = true;
// your code
}
}
);
}
, 5000);
答案 3 :(得分:0)
拔下以太网线
这可能与您的想法无关。
操作系统之间的确切行为可能有所不同,但从根本上说&故意在底层媒体中断并不等于当前正在使用它的TCP连接中断。
在Windows 7之前,整个NIC在拉动cat5引线时关闭,这会关闭通过它的所有TCP连接。这可能会误导人们相信他们正在观察连接关闭。然而,远程TCP对等体仅观察到TCP静默..并且仍然保持在ESTABLISHED
要完全关闭TCP连接,Windows用户可以使用TCPView来识别然后关闭相关套接字。 Linux用户可以使用fuser
来实现相同的效果。如果没有这些想法,请在客户端与服务器之间使用简单的TCP代理,并终止该进程以关闭来自浏览器的TCP连接。
除了之外,由于可靠地影响了连接关闭,您仍然需要使用定期应用程序级ping来测试服务器的可用性,因为实时HTTP会话不一定有任何实时TCP连接
期待HTML5 - WebSocket的行为更像是它的底层TCP连接, 会在关闭时通知你。