征集ajax 轮询 session不超时解决方案

liang__ 2009-12-04 02:55:05
如题

因为ajax轮询造成session不能超时 或者 哪位同学能给出替代ajax轮询的方案(类似在线聊天的用户列表)。
...全文
585 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
逃亡火焰 2012-03-02
  • 打赏
  • 举报
回复
求实现代码~~~~~~
liang__ 2009-12-07
  • 打赏
  • 举报
回复
谢谢各位的回答。
实现方法与九楼说的类似。
因代码写的简陋,就不拿出来献丑了。
思路是这样的。在Filter里记录请求路径。如果是轮询的这个路径,放入session里一个标志位。
然后在客户端用js来进行时间递减,并且去判断session里的标志位,根据标志位来决定超时时间的值。
如果是正常请求,时间恢复超时时间的值。如果是轮询就递减。时间递减到0就把session注销掉。
villagehead 2009-12-04
  • 打赏
  • 举报
回复
setTime(methodName(),2000)
这类的方法不能实现lz的需求吗?

可能ajax的框架,比如jquery/Ext什么的也有吧。

反正定时给服务器个“提醒”,
说“俺还没有死”
就可以了。

啥方法都行的吧?

good luck
shine333 2009-12-04
  • 打赏
  • 举报
回复
当然token的保存于判断,也可以放在服务器的Filter中
shine333 2009-12-04
  • 打赏
  • 举报
回复
你写个Filter,过滤正常的请求,每次有类似请求发送过滤,则往session中记录一个新的令牌(比如java.util.UUID.randomUUID();)
然后再轮询中的代码里,向客户端发送这个令牌(比如response.setHeader("X-Token", session.getAttribute("lastToken").toString());
客户端负责判断轮询返回的token,如果是新的token,保存其生成的时间,如果是旧的,判断其生成的时间,如果过长,则超时,可以强制退出。

之所以令牌没有直接用服务器的时间,是怕客户端与服务器时间不一致。
iamrf 2009-12-04
  • 打赏
  • 举报
回复
在filter里过滤下
liang__ 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zliu789 的回复:]
能不能记录sessionid然后 设置超时时间 到时间 强制destroy
[/Quote]

这样的话,会对正常的访问造成影响。比如说设置超时时间是五分钟。
如果用户在这五分钟内点击了别的链接,我们不能在五分钟的时候把session destroy掉。
老黄瓜_ 2009-12-04
  • 打赏
  • 举报
回复
程序上判断用户操作就刷新 超时时间 复杂 散水...
zjhlht 2009-12-04
  • 打赏
  • 举报
回复
找几个AJAX群加上问问~~~
老黄瓜_ 2009-12-04
  • 打赏
  • 举报
回复
能不能记录sessionid然后 设置超时时间 到时间 强制destroy
liang__ 2009-12-04
  • 打赏
  • 举报
回复
为什么我发起的贴子总不火呢?
顶起,希望知道的不吝啬自己的想法。
大家说一下自己的看法,对不对没关系,大家都是来学习的。
顶者有分。不够可以加。
liang__ 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 horse815 的回复:]
session.setMaxInactiveInterval(-1)
这样此session就不会超时了,不需要时刻轮询了。
[/Quote]

谢谢你的回答,不过你的回答让我很难过,证明了我的表述真的很差。

我的意思是因为ajax轮询 , 造成了session不会失效。
我的要求是要让session失效。
horse815 2009-12-04
  • 打赏
  • 举报
回复
session.setMaxInactiveInterval(-1)
这样此session就不会超时了,不需要时刻轮询了。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧