日期:2014-05-20  浏览次数:20729 次

web应用程序客户端离线判断功能
最近的项目中有这样的需求:

        用户在一段时间内没有操作(离开或什么也不干)系统(WEB应用程序的客户端,下简称系统)系统将自动退出,退出前做些处理(象离线等)。

        这就象MSN的离线功能一样。这看起来是个非常好的功能,所以用户提出了。那是因为在原来的C/S的系统中有这样的功能,所以用户要求现在的系统中也应该有。可是……哎……  

        有谁知道思路或MSN的离线功能的原理,都可以留下你宝贵意见。Thanks!   ...  


------解决方案--------------------
传说中的监听
------解决方案--------------------
应该是监听键盘和鼠标事件吧?没研究过,学习一下
------解决方案--------------------
请先定义出 "什么也不干 ",比如,不动鼠标 or 不动键盘,还是不动鼠标 and 不动键盘,然后用JS进行判断,过了N秒以后发送ajax请求到服务器进行离线操作.
------解决方案--------------------
common method
------解决方案--------------------
在tomcat中,正常的退出等可以用sessionListener来监听,但是非正常情况,好像直接关掉IE,这样,sessionListener是没法知道的,必须要等到seesion的有效时间到了,才会回收它的,

如果只有一个页面,target不能为 _blank等的,这种情况下还可以用 js在IE关掉的时候发送一个指示给tomcat,告诉客户端退出了。。。

这个问题也害我n久了~~`
------解决方案--------------------
按照你的思路,如果要控制web页面的话,只能写js了。因为后台的服务器是不能请求web页面的。只能是页面请求,服务器应答来通信。 js中的事件机制应该可以实现。
------解决方案--------------------
设置session
超时时退出
------解决方案--------------------
同意LS的建议.SESSION的超时尽量设置的短一点.

或者弄个JS背后间隔时间向服务器发送用户状态,不过这样似乎太耗费资源了.
------解决方案--------------------
据说javascript确实有一个函数可以判断
------解决方案--------------------
首先你要明白之所以会有C/S和B/S之分,就是因为它们有些地方是不同的,不可能将C/S的所有功能都能很好地移植过来,如果能完全移植,就不会有2个概念了。
其次,需要使用js进行检测,然后使用ajax(xmlhttp)进行清理工作。
Web上类似屏幕保护的代码可以参考

------解决方案--------------------
这个写出的js恐怕会被拦截-。-