国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

AJAX長輪詢之DotNet實現

開發 后端
今天和一個同事聊到了關于Web(傳統)實時通訊的問題,其中包括輪詢、長輪詢、長連接。最后同事說長輪詢對與.net來說比較難以實現(不使用任何框架)。

今天和一個同事聊到了關于Web(傳統)實時通訊的問題,其中包括輪詢、長輪詢、長連接。***同事說長輪詢對與.net來說比較難以實現(不使用任何框架)。

首先看一下什么是“長輪詢”!定義如下:

長輪詢:客戶端向服務器發送Ajax請求,服務器接到請求后hold住連接,直到有新消息才返回響應信息并關閉連接,客戶端處理完響應信息后再向服務器發送新的請求。

優點:在無消息的情況下不會頻繁的請求。

缺點:服務器hold連接會消耗資源。

以上 “長輪詢” 定義是我在網上抄的哦!

那么是不是只要滿足以上所訴的內容長輪詢是不是就成立呢?那就嘗試一下!

建立數據庫:

  1. if not exists(select 1 from  sys.databases where name='beidoudemo')  
  2. begin  
  3. Create Database beidoudemo  
  4. end  
  5. go  
  6.  
  7. use beidoudemo  
  8. go  
  9. if exists(select 1 from sysobjects where name='AjaxPolling' and type='u')  
  10. begin  
  11.   drop table AjaxPolling  
  12. end  
  13. go  
  14. Create table AjaxPolling  
  15. (  
  16.   id int identity Primary key,  
  17.   userName varchar(30) not null,  
  18.   passwordKey varchar(50) not null 

選用Jquery中的AJAX方法發送異步請求,前臺省了很多事情了!

具體代碼請看:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LongPolling.aspx.cs" Inherits="AjaxFinder.LongPolling" %>  
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head runat="server">  
  6.     <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>  
  7.     <title></title>  
  8.     <script type="text/javascript">  
  9.         var userID = 0;  
  10.         function SendXHR() {  
  11.             $.ajax({  
  12.                 type: "post"//AJAX請求類型  
  13.                 url: "LongPollingServer.ashx"//請求url  
  14.                 cache: false,  //無緩存  
  15.                 timeout: 1000 * 80,  //AJAX請求超時時間為60秒  
  16.                 data: { time: 60, userID: userID }, //參數time時間為最多等待(后臺保持)時間(60秒無論是否有數據立即返回),單位為秒。userID判斷詩句是否為新數據的標識  
  17.                 success: function (data, textStatus) {  
  18.                     var obj = document.getElementById("NameDisplay");  
  19.                     //判斷返回成功還是失敗  如果后臺保持連接的時間一到并且沒有新數據就會返回fail開頭失敗的數據  
  20.                     if (data != null && data != "" && !(data.indexOf("fail") != -1)) {  
  21.                         var strarr = data.split(",");  
  22.                        // alert(strarr[0]);  
  23.                         userID = strarr[0];  
  24.                         obj.innerHTML = "親!有新用戶注冊哦!用戶名:" + strarr[1];  
  25.                     }  
  26.                     else {  
  27.                         obj.innerHTML = "親!暫無新用戶注冊哦";  
  28.                     }  
  29.                     SendXHR();//請求后立即發起AJAX請求  
  30.                 },  
  31.                 error: function (XMLHttpRequest, textStatus, errorThrown) {  
  32.                     //New Error do something  
  33.                     if (textStatus == "timeout") {  
  34.                         //超時間  
  35.                         SendXHR();  
  36.                     }  
  37.                 }  
  38.  
  39.             });  
  40.         }  
  41.         window.onload = function () {  
  42.             SendXHR();  
  43.         }  
  44.     </script>  
  45. </head>  
  46. <body>  
  47.     <form id="form1" runat="server">  
  48.     <div>  
  49.     </div>  
  50.         <div id="NameDisplay">  
  51.         </div>  
  52.     </form>  
  53. </body>  
  54. </html> 

前臺數據請求已經準備好了,接下來看一下后臺代碼實現。具體代碼如下:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Text;  
  6. using System.Net;  
  7. using System.Threading;  
  8. using System.Data;  
  9.  
  10. namespace AjaxFinder  
  11. {  
  12.     /// <summary>  
  13.     /// AJAX長輪詢后臺處理頁面  
  14.     /// 主要用于保持連接  
  15.     /// 有數據返回,無數據繼續保持連接超時返回  
  16.     /// author:bluescreen  
  17.     /// Date  :2013-03-14  
  18.     /// blog:http://www.cnblogs.com/bluescreen/  
  19.     /// 請不要關注代碼編寫規范等一些問題。這僅僅是一個DEMO  
  20.     /// 還存在諸多問題  
  21.     /// </summary>  
  22.     public class LongPollingServer : IHttpHandler  
  23.     {  
  24.  
  25.         public void ProcessRequest(HttpContext context)  
  26.         {  
  27.            /*  
  28.             context.Response.ContentType = "text/plain";  
  29.             context.Response.Write("Hello World");*/ 
  30.             int SendTime = 0;  //最多等待時間  
  31.             int userID = 0;    //上一次的用戶ID  
  32.             if (context.Request.Form["time"] != null&&context.Request.Form["time"].ToString()!="")  
  33.             {  
  34.                 SendTime =int.Parse(context.Request.Form["time"].ToString());//接收傳來的的后臺要保持時間  
  35.             }  
  36.             if (context.Request.Form["userID"] != null && context.Request.Form["userID"].ToString() != "")  
  37.             {  
  38.                 userID = int.Parse(context.Request.Form["userID"].ToString());  
  39.             }  
  40.             int i = 0;//計算超時時間(秒)  
  41.             while (true)  
  42.             {  
  43.                 Thread.Sleep(1000);//停留一千毫秒(1秒)  
  44.                 i++;  
  45.                 if (i < SendTime)  
  46.                 {  
  47.                     if (NameStr(userID) != "")  
  48.                     {  
  49.                         context.Response.Write(NameStr(userID));  
  50.                         break;  
  51.                     }  
  52.                 }  
  53.                 if (i == SendTime)  
  54.                 {  
  55.                     context.Response.Write("fail:無數據");  
  56.                     break;  
  57.                 }  
  58.             }  
  59.         }  
  60.         /// <summary>  
  61.         /// 獲得用戶名  
  62.         /// </summary>  
  63.         /// <param name="userID"></param>  
  64.         /// <returns></returns>  
  65.         private string NameStr(int userID)  
  66.         {  
  67.             string result = string.Empty;  
  68.             string Sqlstr = "select top 1 ID,UserName from AjaxPolling   Order by ID desc";  
  69.             DataSet ds = new DataSet();  
  70.             ds = SQLHelper.Query(Sqlstr, null);  
  71.             if (ds != null)  
  72.             {  
  73.                 if (ds.Tables[0].Rows.Count >= 1)  
  74.                 {  
  75.                     if (int.Parse(ds.Tables[0].Rows[0][0].ToString()) != userID || 0 ==int.Parse(ds.Tables[0].Rows[0][0].ToString()))  
  76.                     {  
  77.                         result = ds.Tables[0].Rows[0][0].ToString() + "," + ds.Tables[0].Rows[0][1].ToString();  
  78.                     }  
  79.                 }  
  80.             }  
  81.  
  82.             return result;  
  83.         }  
  84.         public bool IsReusable  
  85.         {  
  86.             get 
  87.             {  
  88.                 return false;  
  89.             }  
  90.         }  
  91.     }  

以上代碼經過測試的確符合 “長輪詢” 的說法,那是不是可以說是長輪詢呢?各位大牛你們怎么看?

代碼下載:長輪詢AJAX之.net實現

原文鏈接:http://www.cnblogs.com/bluescreen/archive/2013/03/15/2960675.html

責任編輯:林師授 來源: 博客園
相關推薦

2011-05-18 13:28:46

jQueryPHPAJAX

2025-04-14 11:41:12

RocketMQ長輪詢配置

2023-11-28 08:49:01

短輪詢WebSocket長輪詢

2025-04-27 02:00:00

實時通信Nacos服務端

2021-12-29 07:44:50

Dotnet 代碼系統

2025-07-07 03:00:00

2024-05-21 10:23:02

反射技術.NET編程語言

2012-08-01 14:16:27

IBMdW

2022-07-14 08:36:28

NacosApollo長輪詢

2022-07-15 19:57:18

Cadence輪詢開源

2009-05-20 14:49:16

ibmdwAjaxWeb開發

2024-05-23 11:26:02

2012-04-27 10:00:43

jQuery插件

2021-07-07 08:01:51

命令行Dotnet Core控制臺

2021-02-26 12:37:39

WebSocketOkHttp連接

2024-05-27 09:52:57

反射技術.NET動態庫

2017-08-21 21:00:33

Java長圖文

2009-06-18 15:23:49

緩存控制器模式Ajax模式

2025-02-26 02:00:00

2011-05-24 13:37:16

jQueryAjax
點贊
收藏

51CTO技術棧公眾號

www.欧美三级电影.com| 精品一卡二卡三卡四卡日本乱码 | 久久免费国产| 性高潮久久久久久久久| 免费在线看成人av| 美脚丝袜脚交一区二区| 久久综合色天天久久综合图片| 亚洲国产欧美一区二区三区不卡| 久久亚洲色图| 日本中文字幕在线视频观看| 日本一区免费视频| av小片在线| 精品在线小视频| 成人午夜三级| 国产一区二区三区高清视频| 国产麻豆9l精品三级站| 国产视频青青| 91精品国产91久久综合桃花 | 91免费看国产| 久久亚洲道色| 色狠狠久久av五月综合|| 中文av一区特黄| av片在线观看永久免费| 亚洲激情视频在线| 午夜精品999| 久久精品免费一区二区| 欧美一级日韩免费不卡| 日韩av自拍| 五月天激情视频在线观看| 亚洲欧美综合网| 99综合99| 91免费网站视频| 亚洲成人黄色在线| 97在线精品| avlululu| 青青青国产精品一区二区| 国产成人精品一区二区三区四区 | 欧美老女人性开放| 羞羞色国产精品| 成人午夜视频福利| 婷婷av在线| 日韩久久久久久久| 欧美性xxxxxx少妇| 9国产精品午夜| eeuss鲁片一区| 欧洲成人午夜免费大片| 91久色porny| 激情久久免费视频| 日韩欧美xxxx| 国模极品一区二区三区| 国产日产欧美一区二区三区| 麻豆精品蜜桃| 欧美亚洲精品一区二区| 日韩欧美电影在线| 毛片不卡一区二区| 日韩在线观看不卡| 制服诱惑一区| 久久香蕉频线观| 秋霞午夜鲁丝一区二区老狼| a黄色片在线观看| 国产亚洲精品自在久久| 精品日本高清在线播放| 久久精品国产亚洲5555| 一区二区三区四区在线免费视频| 粉嫩精品一区二区三区在线观看| 欧美精选在线播放| 一区二区三区四区五区在线| 免费在线午夜视频| 日本精品一区二区三区高清 久久| 欧美精品久久久久久久久老牛影院| 雨宫琴音一区二区三区| 伊人影院在线视频| 欧洲精品在线播放| 91色中文字幕| 亚洲欧美三级伦理| 伊人一区二区三区| 黄网站免费久久| 国产精品欧美三级在线观看| 偷拍中文亚洲欧美动漫| 欧美日韩免费看| 一区视频二区视频| 国产日韩欧美一区| 青青草免费观看免费视频在线| 久久久亚洲精选| 亚洲成av人片在线| 成人久久18免费网站麻豆| 欧美综合一区| 成人在线视频播放| 亚洲第一区视频| 国产精品wwwww| 麻豆中文字幕在线观看| 欧美一区二三区| 日韩精品视频免费| 欧美图片一区二区三区| 国产女同互慰高潮91漫画| 婷婷综合在线| 午夜在线视频| 99精品免费在线观看| 成人动漫视频在线观看免费| 久久亚洲春色中文字幕| 欧美一级一区二区| 欧美三区在线观看| 91久久精品一区二区二区| 影音先锋亚洲电影| 精品福利电影| 午夜精品毛片| 五月久久久综合一区二区小说| 国产精品xxxav免费视频| 成人软件在线观看| jizzjizz中国精品麻豆| 久久五月精品| 美女精品导航| 欧美人与动牲性行为| 成年人视频免费在线播放| 精品亚洲成a人片在线观看| 一级片免费看| 欧美成人三区| 神马午夜在线视频| 99国内精品久久久久| 福利一区二区免费视频| 四虎精品在线观看| 豆花视频一区二区| 日韩理论电影中文字幕| 中文在线综合| 天天影视天天精品| 久久福利毛片| 中文亚洲免费| 2019国产精品| 欧美日韩精品二区| 亚洲免费av网址| 88xx成人精品| 国产高清不卡av| 亚洲精品国产一区| 九九视频精品在线观看| 欧洲黄色一级视频| 原千岁中文字幕| 黄色大片在线看| 伊人影院蕉久影院在线播放| 成人video亚洲精品| 国产一区二区三区影视| 成人三级视频| 欧美精品一区二区久久| 91麻豆精品一二三区在线| 97久久视频| 狠狠狠色丁香婷婷综合激情 | 日本成人黄色网| 最新97超碰在线| 精品国产乱码一区二区三区 | 69国产精品| 韩日成人影院| 亚洲少妇自拍| 亚洲国产精品v| 日韩理论片在线| 精品香蕉在线观看视频一| 欧美日韩电影在线观看| 欧美极品一区| 成年人福利视频| 国产丝袜视频在线播放| 我爱我色成人网| 99视频精品视频高清免费| 久久综合九色综合欧美就去吻| 欧美一级艳片视频免费观看| 欧美国产精品va在线观看| 国产在线精品播放| 91制片厂免费观看| av大片在线| 日韩午夜av在线| 欧美日韩精品一区二区三区四区 | 樱桃视频成人在线观看| 在线国产日韩| 日韩欧美aaa| 国产91av在线| 免费观看精品视频| 伊人久久在线| 久久国产成人午夜av影院| 欧美精品tushy高清| 精品日韩美女| a免费在线观看| 欧美日韩1080p| 7777精品伊人久久久大香线蕉的 | 啪啪亚洲精品| 亚洲人妖av一区二区| 91wwwcom在线观看| 奇米777影视成人四色| 成人搞黄视频| 精品国产乱码久久久久酒店| 国产精品久久久久7777婷婷| 人成网站免费观看| 国产高清一区| 亚洲成人久久网| 成熟了的熟妇毛茸茸| 欧美成人app| 国产精品美女久久久久aⅴ| 国产精品成人一区二区| 四虎影院在线播放| 美女一区二区视频| 欧美成人午夜剧场免费观看| 手机福利小视频在线播放| 日本中文在线一区| 91精品国产91久久久久久最新 |