实现 asp 的服务器无刷新推技术

服务器|刷新|无刷新

关于推送技术
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

Client PULL(客户端拉技术)
通常,聊天室通过不断刷新来显示服务器的最新信息,即所谓的Client PULL(客户端拉技术)Client PULL必须不停的建立连接,刷新信息,断开连接,这样效率很低,而且速度很慢.(如果加快速度,频繁的建立断开连接刷新页面都会增加服务器与客户端的资源消耗)

Server Push(服务器推技术)
推技术就是建立一个连接以后,由服务器主动的把最新信息源源不断的推送到客户端
不需要不停的建立断开连接,不需要刷新页面,相比之下,推技术效率更好速度最快

但是很可惜,一直以来,ASP都不能实现erver Push技术

曾经看过微软网站提供的ASP推送技术方案,用死循环达到服务器的延时实现Server Push技术,这种代码只要一个客户端执行,CPU占用立即达到百分之百,最重要的是受到ASP线程限制,打开这个页面,其他的ASP页都必须排队等待这个页面执行完毕。

实现 asp 的服务器无刷新推技术
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

首先我用C++写了一个ASPpush.DLL,通过ASP代码的配合达到零负载的延时效果
下载ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe

使用ASP指令EnableSessionState=False突破ASP的线程限制
(这就是最关键的地方了,其实ASP本身是多线程的之所以你在ASP中只能得到单线程其原因是ASP对每一个会话产生一个线程,如果在ASP页面前用上EnableSessionState=False指令,就可以得到一个独立的线程与TCP连接用来源源不断的向客户端推送新的信息)

使用ASP的Response.IsClientConnected属性判断连接及时回收资源

使用以上方法,我制作了一个聊天室,
经过测试,一百人在线聊天,系统的全部CPU占用不超过百分之五(Windows 2003),
无论在内存占用还是CPU占用都没有超过使用客户端刷新的聊天室

实际上,使用客户端刷新的方法,仍然是一个对服务器持续的资源占用,而且必须频繁的建立连接断开连接,对于聊天室来说,客户端刷新的聊天室的资源占用是没有任何优势的,而且速度非常慢

准备工作
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

下载ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe

解压缩后首先请运行:Com.reg(这个文件会在右键菜单中添加注册COM组件的子菜单)

将ASPpush.dll 拷贝到系统目录
windows2000 $:/winnt/system32
windows2003 $:/windows/system32

右键点击system32/ASPpush.dll
点击右键菜单中出现的“注册DLL”
(当然你可以在命令行中注册:Regsvr32 $:/windows/system32/ASPpush.dll)

注意:$: 更换为系统盘

示例代码
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

下面是使用ASPpush.DLL实现服务器推送的示例代码:

<%@ Language="VBScript" codepage ="936" EnableSessionState=False %>
<%
Response.Buffer = True

set ASPpush = Server.CreateObject("ASPpush.page")
Do While Response.IsClientConnected
'================================
'在这里修改或自定义要执行的ASP代码
Response.Write "我晕...<br>"
'================================
Response.Flush
ASPpush.wait 100 '后面的数字以毫秒为单位(1000毫秒=1秒),指定推送的速度
Loop
set ASPpush=nothing
%>

本文主要介绍推技术在ASP中实现的原理,至于具体的实现可能还需要您自已发挥了

----------
附注:

批量文件播种机最新版:网站程序制作必备工具
http://jh.1he.net/yes/down/list.asp?id=106

前些天写了一个小软件:模拟精灵,虽然很简单,不过很实用,也很好玩
也是必备的桌面工具,推荐下载:
http://jh.1he.net/twtbbs/showtopic.asp?id=16931&passre=&forumid=41

时间: 2024-11-08 18:25:34

实现 asp 的服务器无刷新推技术的相关文章

Asp.net实现无刷新检测用户名

本文将向大家介绍Asp.net实现无刷新检测用户名的方法,功能为:当用户输入用户名,用户名的文本框失去焦点后就检测用户名是否重复,不用再点击一个按钮才能检测(如今很多网站都具备这个功能哦). 下面就给出实现这一功能的代码: 前台代码: 以下是引用片段: <script type="text/javascript" language="javascript"> var xmlHttp = null; function CheckUser() { try {

asp.net 实现无刷新验证码无法显示

问题描述 asp.net 实现无刷新验证码无法显示 解决方案 说明你代码写的有问题,刷新显示验证码的话,要加一个随机数,关于验证码生成及调用的步骤如下地址: 解决方案二: 说明你代码写的有问题,刷新显示验证码的话,要加一个随机数,关于验证码生成及调用的步骤如下地址:http://www.cnblogs.com/24la/archive/2012/03/28/ashx-image-code.html 解决方案三: 什么叫无刷新验证码? 点击更换验证码地址?自己看你的代码罗,肯定是img的src设置

asp.net 简便无刷新文件上传系统

asp.net 简便无刷新文件上传系统 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>简便无刷新文件上传系统</title> <s

ASP+AJAX打造无刷新新闻评论系统

ajax|asp+|刷新|无刷新 不知上过ChinaRen校友录的朋友们有没有注意,ChinaRen在改版后很多方面都进行了较大的改动.例如留言与回复方面已经不再像以前那样,在每次提交后总得重新加载一下整个页面,碰到网速超慢时,只能干瞪着眼睛等待.那么现在这种炫丽的效果又是如何做到的呢,如果你觉得有兴趣,那就跟着我一起往下看吧! 了解Ajax的朋友也许知道其实这种炫丽效果的实现并不是一件很为难的事,当然如果你不了解何为Ajax那也没有关系,本节我们就通过打造一个新闻评论系统,来看看到底什么是Aj

Asp.Net2.0无刷新客户端回调

asp.net|客户端|刷新|无刷新 Asp.Net2.0的客户端回调是一种很让人激动的方法,他能够让我们控制要提交什么数据给服务器而不用提交整个页面,同时服务器也只返回你所需要的数据而不要发回整个页面. 首先我们要说一个很重要的方法:GetCallbackEventRefernce.我把我的理解写出来,可能是错误的,恳请指出,非常感谢! GetCallbackEventReference 首先实现让客户端脚本有能力传递参数给服务器端的RaiseCallbackEvent方法,然后返回Raise

asp.net 简便无刷新文件上传系统_实用技巧

ps:flash实现的效果是好得多,但这不是我研究的范围,也没什么可比性. 兼容:ie6/7/8, firefox 3.5.5, opera 10.01, safari 4.0.3, chrome 3.0 效果预览 文件上传 选择文件 重命名 操作 状态 重置 选择文件 重置 选择文件 重置 选择文件 ps:由于需要后台,要测试系统请下载实例测试. ps2:在完整实例文件中,还有一个文件属性查看实例. 程序说明 [upload] 程序中最重要的方法就是upload了,调用它就可以进行无刷新上传.

ASP.NET实例:无刷新的文件上传

程序说明 [upload] 程序中最重要的方法就是upload了,调用它就可以进行无刷新上传.upload的过程是这样的,首先用stop方法停止上一次上传,并判断是否选择文件.然后分别调用_setIframe,_setForm和_setInput,生成需要的iframe,form和input.如果设置了timeout属性的话,会自动设置计时器: 以下为引用的内容:if ( this.timeout > 0 ) {    this._timer = setTimeout( $$F.bind(thi

asp.net实现无刷新DropDownList联动控件

asp.net|控件|刷新|无刷新 在网上看到了一些无刷新的联动控件.下下了测试以后,显示英文和数字可以,但是不可以显示中文,后来把从网上down下来的文件做了一个翻修改,做了一个省市的联动控件.给大家共享一下.可以显示中文了.   <%@ Page language="c#" Codebehind="Example.aspx.cs" AutoEventWireup="false" Inherits="Webs.other.Exa

ASP.net DropDownList 无刷新联动!

asp.net|刷新|无刷新  <TITLE>WebForm2</TITLE>   <SCRIPT language='javascript'>   function load(){     var drp2 = document.getElementById("DropDownList2");     drp2.innerText="";    for(var i = 0;i<=drp2.options.length -1