前端多个长连接测试

1、前端代码

<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <title>1</title>

    <style>

    </style>


</head>
<body>

<button id="button1">按钮1</button>
<button id="button2">按钮2</button>
<button id="button3">按钮3</button>

<div id="logDiv">

</div>

<script src="js/lib/jquery-2.0.0.min.js"></script>
<script type="text/javascript">

    var longPollingAjax1;
    var longPollingAjax2;
    var longPollingAjax3;

    $('#button1').on('click', function () {
        writeLog('button1 start');
        longPolling1();
    });

    $('#button2').on('click', function () {
        writeLog('button2 start');
        longPolling2();
    });

    $('#button3').on('click', function () {
        writeLog('button3 start');
        longPolling3();
    });

    function writeLog(msg) {
        var str = $('#logDiv').html();
        var str = str + "<br>" + msg;
        $('#logDiv').html(str);
    }

    function longPolling1() {
        if (longPollingAjax1) {
            try {
                longPollingAjax1.abort();
            } catch (e) {
                writeLog('longPolling1 中断请求异常');
            }
        }
        var url = 'http://192.168.40.222:8080/nweb/design/agent/test1.aspx';
        longPollingAjax1 = $.ajax({
            type: "GET",
            url: url,
            timeout: 30 * 1000,
            success: function (data) {
                writeLog('longPolling1 请求成功' + data.value);
                longPolling1();
            },
            error: function (xhr, textStatus, errorThrown) {
                if (textStatus == "timeout") {
                    writeLog('longPolling1 重新发起请求');
                    longPolling1();
                } else if (xhr.readyState === 0) {
                    writeLog('longPolling1 软电话网络无法连接或者被取消');
                    setTimeout(longPolling1, 30 * 1000);
                } else {
                    writeLog('longPolling1 同步信息失败');
                    setTimeout(longPolling1, 30 * 1000);
                }
            }
        });
    }

    function longPolling2() {
        if (longPollingAjax2) {
            try {
                longPollingAjax2.abort();
            } catch (e) {
                writeLog('longPolling2 中断请求异常');
            }
        }
        var url = 'http://192.168.40.222:8080/nweb/design/agent/test2.aspx';
        longPollingAjax2 = $.ajax({
            type: "GET",
            url: url,
            timeout: 30 * 1000,
            success: function (data) {
                writeLog('longPolling2 请求成功' + data.value);
                longPolling2();
            },
            error: function (xhr, textStatus, errorThrown) {
                if (textStatus == "timeout") {
                    writeLog('longPolling2 重新发起请求');
                    longPolling2();
                } else if (xhr.readyState === 0) {
                    writeLog('longPolling2 软电话网络无法连接或者被取消');
                    setTimeout(longPolling2, 30 * 1000);
                } else {
                    writeLog('longPolling2 同步信息失败');
                    setTimeout(longPolling2, 30 * 1000);
                }
            }
        });
    }

    function longPolling3() {
        if (longPollingAjax3) {
            try {
                longPollingAjax3.abort();
            } catch (e) {
                writeLog('longPolling3 中断请求异常');
            }
        }
        var url = 'http://192.168.40.222:8080/nweb/design/agent/test3.aspx';
        longPollingAjax3 = $.ajax({
            type: "GET",
            url: url,
            timeout: 30 * 1000,
            success: function (data) {
                writeLog('longPolling3 请求成功' + data.value);
                longPolling3();
            },
            error: function (xhr, textStatus, errorThrown) {
                if (textStatus == "timeout") {
                    writeLog('longPolling3 重新发起请求');
                    longPolling3();
                } else if (xhr.readyState === 0) {
                    writeLog('longPolling3 软电话网络无法连接或者被取消');
                    setTimeout(longPolling3, 30 * 1000);
                } else {
                    writeLog('longPolling3 同步信息失败');
                    setTimeout(longPolling3, 30 * 1000);
                }
            }
        });
    }

</script>


</body>
</html>

  

2、后端代码

    @ResponseBody
    @RequestMapping(value = "test1.aspx", method = RequestMethod.GET)
    public ResultInfo<String> test1(HttpServletResponse response) {
        response.setHeader("Access-Control-Allow-Origin", "*");
        ResultInfo<String> rtn = new ResultInfo<String>();
        try {
            int maxNum = 60;
            int minNum = 10;
            int randomNum = 10;//(int) (1 + Math.random() * (maxNum - minNum + 1));

            Thread.sleep(randomNum * 1000);

            rtn.setValue(String.valueOf(randomNum));
        } catch (Exception e) {
            rtn.setSuccess(false);
            rtn.setMessage(e.getMessage());
        }
        return rtn;
    }

    @ResponseBody
    @RequestMapping(value = "test2.aspx", method = RequestMethod.GET)
    public ResultInfo<String> test2(HttpServletResponse response) {
        response.setHeader("Access-Control-Allow-Origin", "*");
        ResultInfo<String> rtn = new ResultInfo<String>();
        try {
            int maxNum = 60;
            int minNum = 10;
            int randomNum = 15;//(int) (1 + Math.random() * (maxNum - minNum + 1));

            Thread.sleep(randomNum * 1000);

            rtn.setValue(String.valueOf(randomNum));
        } catch (Exception e) {
            rtn.setSuccess(false);
            rtn.setMessage(e.getMessage());
        }
        return rtn;
    }

    @ResponseBody
    @RequestMapping(value = "test3.aspx", method = RequestMethod.GET)
    public ResultInfo<String> test3(HttpServletResponse response) {
        response.setHeader("Access-Control-Allow-Origin", "*");
        ResultInfo<String> rtn = new ResultInfo<String>();
        try {
            int maxNum = 60;
            int minNum = 10;
            int randomNum = 20;//(int) (1 + Math.random() * (maxNum - minNum + 1));

            Thread.sleep(randomNum * 1000);

            rtn.setValue(String.valueOf(randomNum));
        } catch (Exception e) {
            rtn.setSuccess(false);
            rtn.setMessage(e.getMessage());
        }
        return rtn;
    }

3、测试结果

 

4、总结:

    可以有多个长连接同时存在。

原文地址:https://www.cnblogs.com/sshoub/p/6272540.html