六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 25|回复: 0

利用Jquery实现http长连接(LongPoll)

[复制链接]

升级  55.6%

242

主题

242

主题

242

主题

进士

Rank: 4

积分
778
 楼主| 发表于 2013-1-23 02:41:37 | 显示全部楼层 |阅读模式
转载: http://blog.csdn.net/yuxuanji/archive/2009/04/13/4069732.aspx
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="JqueryAjaxLongPoll.aspx.cs" Inherits="JqueryAjaxLongPoll" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">    <title>无标题页</title>    <script type="text/javascript" src="script/jquery-1.2.6.js"></script>    <script type="text/javascript">        $(document).ready(function(){            $("#Button1").bind("click",{btn:$("#Button1")},function(evdata){                $.ajax({                    type:"POST",                    url:"JqueryAjaxLongPoll.aspx",                    dataType:"json",                    timeout:10000,                    data:{ajax:"1",time:"10000"},                    success:function(data,textStatus){                            //alert("ok!");                            evdata.data.btn.click();                    },                    complete:function(XMLHttpRequest,textStatus){                            if(XMLHttpRequest.readyState=="4"){                                alert(XMLHttpRequest.responseText);                            }                    },                    error: function(XMLHttpRequest,textStatus,errorThrown){                            //$("#ajaxMessage").text($(this).text()+" out!")                            alert("error:"+textStatus);                            if(textStatus=="timeout")                                evdata.data.btn.click();                    }                });            });            /*$("#ajaxMessage").ajaxStart(function(){                $(this).text("准备建立请求.readyState0:");            });            $("#ajaxMessage").ajaxSend(function(evt, request, settings){                $(this).text("开始请求,准备发送数据.readyState1:"+request.readyState);            });            $("#ajaxMessage").ajaxComplete(function(event,request, settings){                if(request.status==200)                    $(this).text("请求完成.readyState4:"+request.readyState);            });            $("#ajaxMessage").ajaxStop(function(){                $(this).text("请求结束.");            });*/        });    </script></head><body>    <form id="form1" runat="server">    <div>        <input id="Button1" type="button" value="AjaxLongPoll" />        <label id="ajaxMessage"></label>    </div>    </form></body></html>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Threading;public partial class JqueryAjaxLongPoll : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        if (Request.Form["ajax"] == "1")        {            //Response.End();            int time = Convert.ToInt32(Request.Form["time"]);            DateTime date1 = DateTime.Now.AddMilliseconds((double)time);            bool ready = false;            while (Response.IsClientConnected)            {                Thread.Sleep(3000);                if (DateTime.Compare(date1, DateTime.Now) < 0)                {                    Response.End();                    break;                }                //ready = true;                if (ready)                {                    Response.Write("SetValue('" + DateTime.Now.ToString() + "')");                    //Response.Flush();                    Response.End();                    break;                }                else                {                }            }        }        else        {            if (!Page.IsPostBack)            {            }        }    }}  
<div class="quote_title">写道
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表