测试重新连接不同的浏览器

时间:2016-03-18 12:17:20

标签: javascript

我正在使用不同的浏览器测试来自客户端的应用程序的重新连接,并观察不同的行为。

步骤:

  1. 将我的应用程序连接到我的服务器
  2. 拔下以太网电缆

    • Firefox:立即解除连接事件
    • Chrome:没有
    • IE11:似乎没有立即识别丢失的连接
  3. 我的应用会在收到浏览器丢失的连接事件后立即尝试重新连接。

    我知道这可能取决于不同的浏览器行为。我可以从客户端做些什么来克服浏览器怪癖?

4 个答案:

答案 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连接, 会在关闭时通知你。