请教如何实现ASP聊天室的“推技术”
各位版主和高手们请赐教!
<% Response.Buffer = false% ><html><body><br><% Do While Response.IsClientConnectedNetBox.Sleep 1000Response.Write now & "<br>"Loop% >
<SCRIPT language=javascript> function SyncURL(){if(parent.left.document.readyState==\"complete\")parent.left.HHCtrl.SyncURL(location.href.substring(parent.left.location.href.lastIndexOf(\"/\") + 1));else setTimeout(\"SyncURL();\", 100);}if(location.protocol == \"http:\")SyncURL(); <script>
[此贴子已经被作者于2004-06-08 19:04:16编辑过]
你说的我不会阿“推技术”
用 asp 技术实现推技术的聊天室,主要有以下几个问题:
一、iis 的线程问题。由于推技术的实现必须以独立线程为基础,即每一个推连接必须占用一个线程,直至此连接结束为止。iis 的 asp 是基于 isapi 技术的,而 isapi 在实现时有着严格的线程限制,只能创建很少的线程,直接导致了很少的推连接数。
二、推线程的等待问题。正是因为 iis 在 isapi 管理上面的限制,asp 在实现时是假设程序是绝对不会进入等待的,所以在 asp 中间隔一段时间几乎是不可能的。于是有些开发人员为了实现延时效果,采用了不断判断时间的死循环的方法。殊不知这种循环几乎只需要一个就足以吃掉全部的 cpu 资源。
而使用 NetBox 则没有此类问题。NetBox 的实现采用了自由线程,可创建的线程总数只受限于系统限制,远远高于 iis 的线程限制,在 asp 中适当等待已经不再成为问题。同时 NetBox 的 asp 支持一个新的 NetBox 内建对象,所包含的 Sleep 方法更加方便的实现低负载的等待。
上面就是一段简单的推技术的演示代码: