汕头网站制作全过程,wordpress更改上传的大小,建筑工程网布设,全面的哈尔滨网站建设在有些应用中我们需要实时的更新站点用户是否在线的状态。比如一些论坛里的在线成员实时显示#xff0c;或基于网页的聊天、会议系统等。这种情况下#xff0c;如果用户点击“退出”按钮或链接#xff0c;我们将之行一系列后台操作#xff0c;将该用户标识成off line状态或基于网页的聊天、会议系统等。这种情况下如果用户点击“退出”按钮或链接我们将之行一系列后台操作将该用户标识成off line状态但如果用户直接关闭浏览器的话就需要我们想办法来更新用户的状态。 下面是我总结的几种解决方案请高手们指教 第一类服务端解决 1.如果Session是InProc的话那么在不需要严格实时的应用中使用 session_end 事件合理的Session生命期 是最好的选择 我们都知道在用户浏览器打开网页访问我们的ASP.NET程序时服务器会根据浏览器分配给客户端一个全局唯一的SessionID同时执行Global.asax中的Session_Start事件, 当浏览器关闭或我们在WebConfig中设置的Session生命期过期时将会关闭这个会话同时执行 Session_End 事件。 据此如果用户关闭浏览器我们则可以在Session_End事件中执行将该用户标识成offline的代码。 第二类客户端解决 相比服务端解决方案客户端解决方案比较繁琐复杂需要在所有相关页面中设置而且很有局限性但在一些特殊的应用中也是非常适合的。 1.捕获onbeforeunload或onunload事件 如果我们在body中设置了onbeforeunload或onunload事件函数那么当浏览器关闭时将会先后执行这两段JavaScript方法据此在一些实时性要求很高的应用中比如在线会议如果用户关闭了页面需要马上将状态反馈给服务端。这种情况下我们可以在JavaScript方法中调用WebService来告诉服务端用户已经offline了。 为了提高Javascript代码的效率我们可以用捕获鼠标关闭事件来判断是用户点击了“X”关闭页面还是其它情况下的离开页面代码如下 if(window.event.clientY 0 window.event.clientY -80){ //Call Server method;} 2.定时向服务器汇报状态 在上一种客户端方案中如果客户端突然断电则可能无法及时更新状态。 我们知道在JavaScript中有类似于Timer的setInterval和setTimeout函数我们可以利用这个函数来每隔一段时间之行一段代码 setTimeout(SomeJavascriptFunction(),nTimeoutinMilliseconds,Language); //or setInterval(SomeJavascriptFunction(),nTimeoutinMilliseconds,Language); 据此我们可以在客户端每隔一段时间到服务器汇报在线状态如果一定时间内服务器接收不到客户端的状态更新则视为offline 3.非AJAX的方法 使用传统表单提交的方法貌似可以达成以下代码来自palanisaami 但未经测试 function Signout(){ document.getElementById(Form1).actionSignout.aspx; document.getElementById(Form1).submit();} 转载于:https://www.cnblogs.com/blodfox777/archive/2008/07/22/1248555.html