zoukankan      html  css  js  c++  java
  • ajax实现长连接

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <meta http-equiv="pragma" content="no-cache">
            <meta http-equiv="cache-control" content="no-cache">
            <meta http-equiv="expires" content="0">
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <%@ include file="/tags/jquery-lib.jsp"%>
            
            <script type="text/javascript">
                $(function () {
                
                    (function longPolling() {
                    
                        $.ajax({
                            url: "${pageContext.request.contextPath}/communication/user/ajax.mvc",
                            data: {"timed": new Date().getTime()},
                            dataType: "text",
                            timeout: 5000,
                            error: function (XMLHttpRequest, textStatus, errorThrown) {
                                $("#state").append("[state: " + textStatus + ", error: " + errorThrown + " ]<br/>");
                                if (textStatus == "timeout") { // 请求超时
                                        longPolling(); // 递归调用
                                    
                                    // 其他错误,如网络错误等
                                    } else { 
                                        longPolling();
                                    }
                                },
                            success: function (data, textStatus) {
                                $("#state").append("[state: " + textStatus + ", data: { " + data + "} ]<br/>");
                                
                                if (textStatus == "success") { // 请求成功
                                    longPolling();
                                }
                            }
                        });
                    })();
                    
                });
            </script>
        </head>
        
        <body>

    上面这段代码就是才有Ajax的方式完成长连接,主要优点就是和服务器始终保持一个连接。如果当前连接请求成功后,将更新数据并且继续创建一个新的连接和服务器保持联系。如果连接超时或发生异常,这个时候程序也会创建一个新连接继续请求。这样就大大节省了服务器和网络资源,提高了程序的性能,从而也保证了程序的顺序。

    原文链接:http://blog.csdn.net/educast/article/details/50474898

    如果您觉得这篇博客对您产生了一些必要的帮助,  欢迎您对我意思意思, 我将会觉得您非常够意思!

    
    
  • 相关阅读:
    ruby 中 raise 抛出异常
    ruby中attr_accessor方法的理解
    Redis实现分布式缓存
    应用服务器集群概念
    反向代理和正向代理区别
    如何限制同一用户同时登录多台设备?
    Docker 初始
    Java 的反射机制你了解多少?
    JWT 实战
    判断 uniapp 项目运行到 什么机型
  • 原文地址:https://www.cnblogs.com/boosasliulin/p/5242081.html
Copyright © 2011-2022 走看看