zoukankan      html  css  js  c++  java
  • 实现 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中实现的原理,至于具体的实现可能还需要您自已发挥了

     服务器推技术原理

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    那些年搞不懂的多线程、同步异步及阻塞和非阻塞(二)---概念区分
    那些年搞不懂的多线程、同步异步及阻塞和非阻塞(一)---多线程简介
    websocket简单实例
    map对象拷贝问题
    【简单算法】44.位1的个数
    【简单算法】43.罗马数字转整数
    【简单算法】42. 3的幂
    【简单算法】41.计数质数
    【简单算法】40.Fizz Buzz
    【简单算法】39.最小栈
  • 原文地址:https://www.cnblogs.com/Athrun/p/1341370.html
Copyright © 2011-2022 走看看