2014-03-24 106 views
0

我想知道检测浏览器注销的最佳方法是什么?我已经有一个计时器设置,可在30分钟后使会话无效。但是,如果用户没有注销但只是退出浏览器呢?另一位用户在30分钟之前在同一台计算机上打开相同的浏览器,因为返回到停止位置的设置会在浏览器设置中打开。知道用户是否已注销的最佳方法

到目前为止,我们每30分钟设置一个计时器,我们有一个注销按钮,但除此之外,注销或知道用户是否退出其浏览器的最佳方式是什么。我要求这样做的原因是因为在Chrome,Firefox等设置中存在很多安全问题,让用户可以回到他们离开的位置。特别是当浏览器崩溃或被迫退出时,如果您第二天打开它,当浏览器提示您因为它意外退出而点击“恢复”按钮时,它将返回到您离开的位置。

会话劫持呢?

目前在WebSphere上使用Java/JSP with Javascript/jQuery。

+0

你看着会话cookie来完成? – Smeegs

回答

1

唯一的方法就是使用WebSockets。 websocket始终在用户的浏览器和服务器之间保持连接并在连接关闭时引发事件。

你可以使用Node.js的Socket.io库。如果用户关闭浏览器,则TCP连接将中断,并引发一个事件,您可以终止该会话。

类似的事情可以用ASP.net's SignalR.

+0

我正在寻找更多的Java方式或JavaScript方式,而无需在应用程序中实施新的语言。让我知道是否可能有其他方法。 关于HTML 5 WebSockets和JWebSockets(Java) – Joe

+0

Node.js仅使用JavaScript。 你不能用客户端JavaScript来做到这一点。您还需要在服务器上监听连接中断时可以终止会话的内容。 在这种情况下,JavaScript本身无法工作。 服务器端JavaScript(Node.js)是必须的。 :) – writeToBhuwan

+0

尽管Node.js需要实现/安装,但我想更简单一些。我不知道我们的服务器是否会支持node.js – Joe

0

你可以添加一个ping页面,基本上用javascript你会每隔30秒调用一次这个页面,你可以用memcached来实现这个。如果它缺少2/3坪用户真的离线。

+0

如果有30,000个用户在线,该怎么办......该方法对于服务器来说很重要。巨大的性能下降 – Joe

+0

不是真的,考虑到你可以在整个memcached服务器之间共享负载,并且你真的不需要任何访问任何db来执行此操作。我在一个网站上使用了一个网站,该网站在单个memcached节点上广告17k个并发用户,负载为零 – sathia

相关问题