激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - Asp.net的服務(wù)器推技術(shù) (Server Push)

Asp.net的服務(wù)器推技術(shù) (Server Push)

2019-07-04 14:31服務(wù)器之家 ASP.NET教程

在以往的和服務(wù)器端通信技術(shù)中,我們多數(shù)使用的是AJAX輪詢式訪問(wèn),也就是在Javascript中控制時(shí)間間隔,然后每隔一段時(shí)間就訪問(wèn)一次服務(wù)器,然后獲得數(shù)據(jù)或通知。但是這種輪詢方式的訪問(wèn)有90%是在做無(wú)用功。

要想長(zhǎng)時(shí)間保持服務(wù)器和瀏覽器之間的連接怎么辦?長(zhǎng)連接技術(shù),這可不是什么新技術(shù),用IFrame作為隱藏幀指向長(zhǎng)請(qǐng)求頁(yè)面的方法早已被很多人運(yùn)用在互聯(lián)網(wǎng)上,但是IFrame作為隱藏幀有一個(gè)弊端,那就是瀏覽器的進(jìn)度條始終處在讀取狀態(tài)。為了使用戶獲得更好體驗(yàn),“Google的天才們”使用了一個(gè)叫“htmlfile”的對(duì)象解決了這一問(wèn)題,并把它運(yùn)用了了GMail和GTalk兩個(gè)產(chǎn)品上。 
如今我們公司要做的新項(xiàng)目上要求有實(shí)時(shí)報(bào)警功能,本來(lái)我想用AJAX輪詢做,但是覺(jué)得挺沒(méi)追求的,前段時(shí)間聽(tīng)說(shuō)有了Server Push,但是沒(méi)仔細(xì)研究,這次倒是個(gè)機(jī)會(huì),一天時(shí)間,從網(wǎng)上搜集資料。資料不是很多,而且現(xiàn)在有很多開(kāi)發(fā)人員還認(rèn)為長(zhǎng)連接是天方夜譚,居然還有把HTTP協(xié)議搬出來(lái)要證明自己觀點(diǎn)的…… 
廢話不多說(shuō)了,來(lái)介紹一下長(zhǎng)連接技術(shù),通常的長(zhǎng)鏈接就是做一個(gè)網(wǎng)頁(yè),里面寫好一個(gè)IFrame標(biāo)簽,高寬設(shè)置為0,SRC屬性指向一個(gè)網(wǎng)頁(yè),比如是ASPX,然后在這個(gè)文件中不做別的,只是在調(diào)用Context.Response.Write方法,輸出什么?比如客戶端有一個(gè)更改時(shí)間的方法Change(time),那輸出就是("<script>window.parent.Change("+DateTime.Now.ToString()+")</script>"),也就是不斷的輸出客戶端的函數(shù)調(diào)用,并且做成死循環(huán),這樣瀏覽器和服務(wù)器端就形成了一條源源不斷的數(shù)據(jù)傳輸鏈接。 
那htmlfile是什么呢?這是一個(gè)類似Javascript中Window對(duì)象的一個(gè)ActiveXObject,它內(nèi)部也是DOM結(jié)構(gòu),將作為隱藏幀的IFrame寫入這個(gè)對(duì)象中,就可以解決進(jìn)度條的問(wèn)題。說(shuō)的可能比較晦澀,來(lái)看實(shí)例代碼吧: 
Default.aspx.cs 
c# 代碼 

復(fù)制代碼代碼如下:


public partial class _Default : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 


protected override void Render(HtmlTextWriter output) 

string str; 
while (true) 
{//死循環(huán)保持長(zhǎng)鏈接 
str = "<script >window.parent.Change('" + DateTime.Now.ToLongTimeString() + "')</script>"; 
this.Context.Response.Write(str); 
this.Context.Response.Flush();//輸腳本調(diào)用出 
System.Threading.Thread.Sleep(1000); 



WebForm1.aspx 

復(fù)制代碼代碼如下:


<!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>Asp.net Server Push</title> 
<script type="text/javascript"> 
function Change(str){ 
window.document.getElementById("div1").innerText=str; 

function onload(){ 
var ifrpush = new ActiveXObject("htmlfile"); // 創(chuàng)建對(duì)象 
ifrpush.open(); //打開(kāi) 
var ifrDiv = ifrpush.createElement("div"); //添加一個(gè)DIV 
ifrpush.appendChild(ifrDiv); //添加到 htmlfile 
ifrpush.parentWindow.Change=Change; //注冊(cè) javascript 方法 搞不明白為什么還要注冊(cè) 
ifrDiv.innerHTML = "<iframe src='Default.aspx'></iframe>"; //在div里添加 iframe 
ifrpush.close(); //關(guān)閉 

onload(); 
</script> 
</head> 
<body> 
<div style=" float:left">現(xiàn)在時(shí)間是:</div> 
<div id="div1"></div> 
</body> 
</html> 


Default.aspx不需要做修改。 
serverpush.rar

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人午夜视频免费看 | 成人久久久精品乱码一区二区三区 | 成人在线视频国产 | 亚洲成人精品一区二区 | 羞羞电影在线观看 | 91美女视频在线观看 | 欧美在线小视频 | 久色精品视频 | 亚洲小视频网站 | 久草在线综合 | 国产精品av久久久久久无 | 黄色网址免费入口 | 国人精品视频在线观看 | 日韩一级片一区二区三区 | 免费欧美精品 | 久久99精品久久久久久秒播放器 | 国产羞羞视频在线观看 | 国产精品久久久久久久久久东京 | 99爱视频在线观看 | 国产欧美日韩免费 | 精品久久久久久久久久久久久久 | 成人乱码一区二区三区不卡视频 | 久久久精品精品 | 91 在线免费观看 | 国产精品久久久久免费视频 | 久久av免费 | 91在线视频网址 | 日韩蜜桃视频 | 成人aaaa免费全部观看 | 国产视频在线观看免费 | 欧美精品亚洲人成在线观看 | 精品国产高清一区二区三区 | 特级无码毛片免费视频尤物 | 91不卡在线 | 一级黄片毛片免费看 | 亚洲国产网址 | 欧美雌雄另类xxxxx | 国产精品一区二区日韩 | 97中文字幕第一一一页 | 久久老司机精品视频 | 久久精品亚洲国产奇米99 |