Jetty 8 WebSocket和会话超时

时间:2011-10-18 11:54:39

标签: session jetty websocket

我是jetty的新手,我尝试开发一个使用不同servlet的小应用程序。其中一个servlet是WebSocketServlet。现在我试图构建一个身份验证机制,我的基本想法是使用jetty的默认HttpSession实现,可以通过HttpServletRequest.getSession()访​​问;

所以我想说我想创建一个小聊天应用程序(我只谈论服务器端),并且假设只有两个 小服务程序:

  • 一个WebSocketServlet,用于接收和转发聊天消息给同一聊天室中的其他用户。这有URL / servlets / chat
  • 此外,还有第二个名为AvatarServlet的“普通”HttpServlet。这个servlet的功能非常简单:这个servlet处理HTTP POST事件,允许当前用户上传和更改自己的头像个人资料图片。 URL是/ servlets / avatar

因此,如果用户已登录,则avatar servlet应该只处理HTTP POST,这对我来说,用户有一个有效的HttpSession(当然与聊天servlet相同的HttpSession)。

我的问题: 假设用户通过聊天servlet聊了1个小时,并在这个小时后决定通过我的头像servlet更改他的头像图片。由于我正在使用websockets,因此页面永远不会重新加载,并且只在开始时(1小时前)调用聊天servlet来建立websocket连接。

所以我想,即使用户一直在线并且一直处于活动状态,当用户尝试使用头像servlet时(1小时后),会话也将过期。

我的假设是否正确?有没有人有这个主题的经验或知道更好的解决方案?

谢谢

1 个答案:

答案 0 :(得分:1)

你可以每x分钟发送一个ajax-request,它只包含会话ID,因此基本上“触及”会话。这样,只要用户打开聊天窗口,会话就会保持活动状态。当聊天窗口关闭时,会话超时。