在Asp.net下實(shí)現(xiàn)變長連接的web即時(shí)應(yīng)用的實(shí)現(xiàn)范例及ReverseAjax的演示介紹
更新時(shí)間:2011年12月22日 22:49:25 作者:
根據(jù)公司近期的一個(gè)培訓(xùn)整理的資料,附件包括一個(gè)完整的使用變長連接的web即時(shí)聊天室的范例和針對(duì)ReverseAjax的ppt培訓(xùn)文稿,其中ppt中包含了對(duì)范例程序的完整講解
ReverseAjax 反轉(zhuǎn)AJAX是一種旨在將邏輯控制權(quán)轉(zhuǎn)移到服務(wù)端的Web實(shí)現(xiàn)模式
何謂控制權(quán)轉(zhuǎn)移
傳統(tǒng)的AJAX調(diào)用一般由客戶端行為觸發(fā),比如說獲取區(qū)域數(shù)據(jù),異步驗(yàn)證等。
ReverseAjax將控制權(quán)轉(zhuǎn)交給服務(wù)端,就像服務(wù)端觸發(fā)客戶端事件一樣,即很早的Web推的技術(shù)。
ASP.NET實(shí)現(xiàn)變長連接需要使用到異步頁面的技術(shù),同時(shí)該頁面需要禁用會(huì)話來實(shí)現(xiàn)每次請(qǐng)求都產(chǎn)生一個(gè)新的實(shí)例執(zhí)行。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="response.aspx.cs" Inherits="_Default" Async="true" AsyncTimeout="30" EnableSessionState="False"%>
if (Request.Form.Count>0)
{
if (Request.Form["type"] == "loop")
{
ChatTask task = new ChatTask(this.Context);
task._chatNow = this.ChatNow;//有新的消息的回調(diào)方法,即為通知處理,這個(gè)時(shí)候釋放掉連接
string user = Request.Form["user"].Trim();
PageAsyncTask async = new PageAsyncTask(new BeginEventHandler(task.OnBegin), new EndEventHandler(task.OnEnd), new EndEventHandler(task.OnTimeout), user);
Page.RegisterAsyncTask(async);
Page.ExecuteRegisteredAsyncTasks();//異步執(zhí)行
}
}
具體代碼和實(shí)現(xiàn)效果請(qǐng)參見范例。
附件:
范例程序: ReverseAjaxChat范例.rar
何謂控制權(quán)轉(zhuǎn)移
傳統(tǒng)的AJAX調(diào)用一般由客戶端行為觸發(fā),比如說獲取區(qū)域數(shù)據(jù),異步驗(yàn)證等。
ReverseAjax將控制權(quán)轉(zhuǎn)交給服務(wù)端,就像服務(wù)端觸發(fā)客戶端事件一樣,即很早的Web推的技術(shù)。
ASP.NET實(shí)現(xiàn)變長連接需要使用到異步頁面的技術(shù),同時(shí)該頁面需要禁用會(huì)話來實(shí)現(xiàn)每次請(qǐng)求都產(chǎn)生一個(gè)新的實(shí)例執(zhí)行。
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="response.aspx.cs" Inherits="_Default" Async="true" AsyncTimeout="30" EnableSessionState="False"%>
if (Request.Form.Count>0)
{
if (Request.Form["type"] == "loop")
{
ChatTask task = new ChatTask(this.Context);
task._chatNow = this.ChatNow;//有新的消息的回調(diào)方法,即為通知處理,這個(gè)時(shí)候釋放掉連接
string user = Request.Form["user"].Trim();
PageAsyncTask async = new PageAsyncTask(new BeginEventHandler(task.OnBegin), new EndEventHandler(task.OnEnd), new EndEventHandler(task.OnTimeout), user);
Page.RegisterAsyncTask(async);
Page.ExecuteRegisteredAsyncTasks();//異步執(zhí)行
}
}
具體代碼和實(shí)現(xiàn)效果請(qǐng)參見范例。
附件:
范例程序: ReverseAjaxChat范例.rar
相關(guān)文章
在ASP.NET Core5.0中訪問HttpContext的方法步驟
這篇文章主要介紹了在ASP.NET Core5.0中訪問HttpContext的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
asp.net 簡易生成注冊(cè)碼(數(shù)字+大小寫字母)
注釋寫的很詳細(xì),不做過多的描述了,希望能給初學(xué)者帶來一些幫助,同時(shí)也是自己知識(shí)的一個(gè)積累過程。2008-11-11
在Code First模式中自動(dòng)創(chuàng)建Entity模型
這篇文章介紹了在Code First模式中自動(dòng)創(chuàng)建Entity模型的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
ASP.NET Core跨站登錄重定向的實(shí)現(xiàn)新姿勢
這篇文章主要給大家介紹了關(guān)于ASP.NET Core實(shí)現(xiàn)跨站登錄重定向的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

