首页 新闻 会员 周边 捐助

如何B/S架构中客户端关闭最后一个浏览器窗口时,自动注销服务端的用户登陆状态

0
悬赏园豆:30 [已关闭问题]

如何B/S架构中客户端关闭浏览器窗口,自动注销服务端的用户登陆状态?

有一个B/S模式的系统,在服务器端需要得到该用户的登陆状态和信息,但是当客户端的浏览器最后一个窗口被关闭的时候,把服务器端的用户登陆状态注销掉~~~

我自己的想法感觉太复杂了~~ 所有来这里求大牛们帮帮忙~~谢谢~~~

关键在于怎么判断客户端关闭了最后一个浏览器窗口,然后通知服务器端:“我这边已经关闭窗口了!”
 麻烦请提出具体解决方案和具体的实施细节之类的。高分献上。

comment长连接方式太耗资源,不太可取。

问题补充: 不用考虑关机这种情况哈~~~
.NET架构的主页 .NET架构 | 菜鸟二级 | 园豆:350
提问于:2010-07-21 00:49
< >
分享
其他回答(4)
0

用 doUnload 试试,看看下面的讨论

http://codingforums.com/showthread.php?t=37279

如果不行,可以考虑用  AJAX 定时通过 web service 和服务器通讯一下,服务器检测这个心跳消息,如果超时,就认为退出了。

eaglet | 园豆:17139 (专家六级) | 2010-07-21 07:28
0

用户登录后,信息是保存到session里面。而session是存储到服务器端的数据。每个浏览器会分配不同的sessionid,因此浏览器管理session都是根据sessionid来的。因此可以设置sessionid。

客户端关闭了最后一个浏览器窗口,浏览器应该会把sessionid清除。当客户端再次向服务器端发出请求的时候,同时会把sessionid传过去,如果sessionid清除了,服务器端就会知道了。

stringtwb | 园豆:205 (菜鸟二级) | 2010-07-21 09:24
0

再怎么搞,也无法判断关了电脑情况吧。

Astar | 园豆:40805 (高人七级) | 2010-07-21 09:31
同意
支持(0) 反对(0) eaglet | 园豆:17139 (专家六级) | 2010-07-21 12:45
0

ASP中有个Global.asax里面有个

    void Session_End(object sender, EventArgs e)
    {
        //在会话结束时运行的代码。
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式
        //设置为 StateServer 或 SQLServer,则不会引发该事件。

    }

tiger longhu | 园豆:35 (初学一级) | 2010-07-21 11:51
0

 使用 js 的setInterval函数 和ajax  更新用户最后在线时间

clound | 园豆:481 (菜鸟二级) | 2010-08-03 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册