完成 asp 的服務(wù)器無刷新推技術(shù)
發(fā)表時(shí)間:2024-01-23 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]關(guān)于推送技術(shù) ----------------------------- 轉(zhuǎn)載請(qǐng)注明出處:一鶴.NET_WWW.1HE.NET Client PULL(客戶端拉技術(shù)) 通常,聊天室通過不斷刷新來顯示服務(wù)器的最新信息,即所謂的Client PULL(客戶端拉技術(shù))Client PULL必須不停的建立...
關(guān)于推送技術(shù)
-----------------------------
轉(zhuǎn)載請(qǐng)注明出處:一鶴.NET_WWW.1HE.NET
Client PULL(客戶端拉技術(shù))
通常,聊天室通過不斷刷新來顯示服務(wù)器的最新信息,即所謂的Client PULL(客戶端拉技術(shù))Client PULL必須不停的建立連接,刷新信息,斷開連接,這樣效率很低,而且速度很慢.(如果加快速度,頻繁的建立斷開連接刷新頁面都會(huì)增加服務(wù)器與客戶端的資源消耗)
Server Push(服務(wù)器推技術(shù))
推技術(shù)就是建立一個(gè)連接以后,由服務(wù)器主動(dòng)的把最新信息源源不斷的推送到客戶端
不需要不停的建立斷開連接,不需要刷新頁面,相比之下,推技術(shù)效率更好速度最快
但是很可惜,一直以來,ASP都不能實(shí)現(xiàn)erver Push技術(shù)
曾經(jīng)看過微軟網(wǎng)站提供的ASP推送技術(shù)方案,用死循環(huán)達(dá)到服務(wù)器的延時(shí)實(shí)現(xiàn)Server Push技術(shù),這種代碼只要一個(gè)客戶端執(zhí)行,CPU占用立即達(dá)到百分之百,最重要的是受到ASP線程限制,打開這個(gè)頁面,其他的ASP頁都必須排隊(duì)等待這個(gè)頁面執(zhí)行完畢。
實(shí)現(xiàn) asp 的服務(wù)器無刷新推技術(shù)
-----------------------------
轉(zhuǎn)載請(qǐng)注明出處:一鶴.NET_WWW.1HE.NET
首先我用C++寫了一個(gè)ASPpush.DLL,通過ASP代碼的配合達(dá)到零負(fù)載的延時(shí)效果
下載ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe
使用ASP指令EnableSessionState=False突破ASP的線程限制
(這就是最關(guān)鍵的地方了,其實(shí)ASP本身是多線程的之所以你在ASP中只能得到單線程其原因是ASP對(duì)每一個(gè)會(huì)話產(chǎn)生一個(gè)線程,如果在ASP頁面前用上EnableSessionState=False指令,就可以得到一個(gè)獨(dú)立的線程與TCP連接用來源源不斷的向客戶端推送新的信息)
使用ASP的Response.IsClientConnected屬性判斷連接及時(shí)回收資源
使用以上方法,我制作了一個(gè)聊天室,
經(jīng)過測(cè)試,一百人在線聊天,系統(tǒng)的全部CPU占用不超過百分之五(Windows 2003),
無論在內(nèi)存占用還是CPU占用都沒有超過使用客戶端刷新的聊天室
實(shí)際上,使用客戶端刷新的方法,仍然是一個(gè)對(duì)服務(wù)器持續(xù)的資源占用,而且必須頻繁的建立連接斷開連接,對(duì)于聊天室來說,客戶端刷新的聊天室的資源占用是沒有任何優(yōu)勢(shì)的,而且速度非常慢
準(zhǔn)備工作
-----------------------------
轉(zhuǎn)載請(qǐng)注明出處:一鶴.NET_WWW.1HE.NET
下載ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe
解壓縮后首先請(qǐng)運(yùn)行:Com.reg(這個(gè)文件會(huì)在右鍵菜單中添加注冊(cè)COM組件的子菜單)
將ASPpush.dll 拷貝到系統(tǒng)目錄
windows2000 $:/winnt/system32
windows2003 $:/windows/system32
右鍵點(diǎn)擊system32/ASPpush.dll
點(diǎn)擊右鍵菜單中出現(xiàn)的“注冊(cè)DLL”
(當(dāng)然你可以在命令行中注冊(cè):Regsvr32 $:/windows/system32/ASPpush.dll)
注意:$: 更換為系統(tǒng)盤
示例代碼
-----------------------------
轉(zhuǎn)載請(qǐng)注明出處:一鶴.NET_WWW.1HE.NET
下面是使用ASPpush.DLL實(shí)現(xiàn)服務(wù)器推送的示例代碼:
<%@ Language="VBScript" codepage ="936" EnableSessionState=False %>
<%
Response.Buffer = True
set ASPpush = Server.CreateObject("ASPpush.page")
Do While Response.IsClientConnected
'================================
'在這里修改或自定義要執(zhí)行的ASP代碼
Response.Write "我暈...<br>"
'================================
Response.Flush
ASPpush.wait 100 '后面的數(shù)字以毫秒為單位(1000毫秒=1秒),指定推送的速度
Loop
set ASPpush=nothing
%>
本文主要介紹推技術(shù)在ASP中實(shí)現(xiàn)的原理,至于具體的實(shí)現(xiàn)可能還需要您自已發(fā)揮了
----------
附注:
批量文件播種機(jī)最新版:網(wǎng)站程序制作必備工具
http://jh.1he.net/yes/down/list.asp?id=106
前些天寫了一個(gè)小軟件:模擬精靈,雖然很簡(jiǎn)單,不過很實(shí)用,也很好玩
也是必備的桌面工具,推薦下載: