|
不刷新聊天室的问题 ~ admin
大家都会喜欢不是依靠刷新叶面来post message的聊天室,我想要达到这种效果
的方法只有一个,延迟叶面的下载,也就是说让叶面处于不断的下载状态,所以 可以用循环的方法判断,每隔一段时间,检查一下有没有新的发言,ASP中没有定 时器的方法,所以只有自己写,以下是我写的一个简单的定时器: <% Server.ScriptTimeOut =3600 myTime=Time() delayTime=1/(3600*24)'延迟时间,1秒 thisTime=Time() while myTime<(thisTime+1/144)'循环时间10分钟 nowTime=Time() while myTime<(nowTime+delayTime) myTime=Time() wend response.write myTime & " "'每隔1秒打印一次当前时间 wend %> 但是我发现这种循环很占用资源,搞不好就会让IIS Down掉,但是实在想不出更 好的办法,我做了一个简单的界面,达到最简单的聊天室效果,但是这个东西太 耗费资源,根本不实用,实际上用什么语言是不重要的,如phpperl遇到的问题 也是一样,关键在于技巧,不知道哪为高手有这方面的经验之谈,不妨说出来听 听,大家共同进步嘛,也希望斑竹能给点建议,Thank you very much!!! 有兴趣的话你可以试试,有3个文件:index.htm、foot.asp和head.asp,下面是 代码: index.htm +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>New Page 2</title> </head> <frameset rows="*,20%"> <frame name="main" target="footnotes" src="head.asp"> <frame name="footnotes" src="foot.asp"> <noframes> <body> <p>此网页使用了框架,但您的浏览器不支持框架。</p> </body> </noframes> </frameset> </html> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ foot.asp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>New Page 4</title> </head> <body> <form method="GET" action="foot.asp"> <p><input type="text" name="chatword" size="20"><input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2" ></p> </form> <% if request("chatword")<>"" then Application("chatword")=request("chatword") end if %> </body> </html> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ head.asp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>New Page 3</title> <base target="footnotes"> </head> <body> <p> hello <% Server.ScriptTimeOut =3600 myTime=Time() delayTime=1/(3600*24) thisTime=Time() while myTime<(thisTime+1/144) nowTime=Time() while myTime<(nowTime+delayTime) myTime=Time() wend if Application("chatword")<>Application("preword") then response.write "<p>" & myTime & " " & Application("chatword") end if Application("preword")=Application("chatword") wend %> </p> </body> </html> |