日期:2014-05-18  浏览次数:20690 次

(WEB开发)大家来讨论客户端session问题,我有一些灵感了
一直都说session在WEB中不好控制,基于   http协议的,是无状态的,当客户端向服务器发送了一个请求后,服务器会马上建立一个新的tcp/ip连接,在该会话结束语后,如页面完全载入后,这个连接就关闭了。所以服务器端无法知道访客是什么时候走的。这是一个很大的问题,它不同于以往的C/S构架的系统:服务器端和客户端的连接会话是时时存在的。
http协议的这个无状态特点会对我们在开发WEB系统时给我们带来很多的问题。

如:精确统计网站当前在线人数,精确统计某一个客户在线时间及离开时间,WEB聊天系统的在线名单,
还有,在一个WEB系统中如果要求客户必须通过 "注销系统 "来退出登录,以便于服务器端对此用户做一些信息保存或其它处理之类   的,可是并不是每一个用户都是那么听话的,他们也许就直接通过占击网页上的关闭按钮或alt+F4,这样服务器就不能做我刚才说的那些工作了。。

我一直在想,http的session在这种特点多不爽啊,哎。真的好想找到一个解决的办法。

最近在看AJAX,前些天又在看javascript,看到了网页中一个“网页关闭”事件,如
<body   onUnload= "exit() "> 网页内容 </body> ,我看到有这样的一个事件,心里面好激动啊,我又在想,那在客户端的javascript中可不可以调用服务器上的代码呢?
我突然就想到了ajax,可以通过ajax来调用服务器上的文件!!!

哈哈,那这样是不是就可以解决了我上面所提出的基于http的session的无状态所产生的一系列的问题呢?

我觉得问题不是我想的这么简单。

我想在网页关闭时,通过ajax来调用服务器上的处理方法时,这之间总得有一个时间间隔吧。客户端会不会卡或者什么呢,具体的会出现什么情况,我也不知道。因为我还没去试过。

以上就是我想到了,写的有些乱。

我想大家来一起讨论一下在java   web开发的如果对待sessoin问题,以及我在上面所说的这种思路。




------解决方案--------------------
默认时间是可以改变的, 就在SESSION销毁后,保存用户信息(如果用户已经登陆了)
------解决方案--------------------
可以用JAVASCRIPT来监听窗口关闭, 然后提交一个表单给服务器, 这样就可以运行服务器端程序了
------解决方案--------------------
用onUnload做能够解决一部分问题,很多人讨论过了。


像网络中断、关机、断电、等等,还是需要SESSION监听,大概模拟用户在线情况。
------解决方案--------------------
在页面刷新时,也会触发onUnload的
------解决方案--------------------
Session有个timeout时间的,设置一下就可以了。
就可以销毁会话。
------解决方案--------------------
刷新也会触发onUnload事件,是这样的。

------解决方案--------------------
页面跳转\刷新\关闭都会触发onUnload时间.
实际上,有必要那么精确的统计在线人数吗?我觉得这个需求本身就没有任何意义.如果非要的话,在每一个页面里面嵌入一段脚本,每隔X秒就用异步请求向服务器提交一个标记,表明 "我还活着 ",但是这样换来的服务器负载也是不值得的.