参考:
PS:为了满足某些需要实时请求的业务(PS:例如聊天室),我们可以通过多种技术实现, 其中建议大家使用长链接(PS:减少带宽)或者服务器主动推送技术(例如:Signalr)。
这里只对长链接进行陈述,参考上面的博客写了个Demo如下(复制到项目里面可以直接运行):
新建一个 Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LongPool.Default" %>using System;using System.Collections.Generic;using System.Linq;using System.Threading;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace LongPool{ public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.Form["ajax"]=="1") { int time = Convert.ToInt32(Request.Form["time"]); DateTime date1 = DateTime.Now.AddMilliseconds(time); bool ready = false; int n = 0; while (Response.IsClientConnected) { Thread.Sleep(3000); if (DateTime.Compare(date1,DateTime.Now)<0) { Response.Write("{\"success\":0}"); Response.End(); break; } //此处进行请求处理,有结果了置ready = true ready = true; if (ready) { Response.Write("{\"success\":1}"); Response.End(); break; } } } else { if (!IsPostBack) { } } } }}