我是jetty的新手,我尝试开发一个使用不同servlet的小应用程序。其中一个servlet是WebSocketServlet。现在我试图建立一个身份验证机制,我的基本想法是使用jetty的默认HttpSession实现,它可以通过HttpServletRequest.getSession();
假设我想创建一个小聊天应用程序(我只谈论服务器端),假设只有两个servlet:
- 一个WebSocketServlet,用于接收和转发聊天消息给同一聊天室中的其他用户。它的URL是/servlet/chat
- 此外,还有第二个"正常"HttpServlet称为AvatarServlet。这个servlet的功能非常简单:这个servlet处理HTTP POST事件,以允许当前用户上传和更改他自己的头像配置文件图片。URL是/servlet/avatar
所以头像servlet应该只在用户登录时处理HTTP POST,这对我来说意味着用户具有有效的HttpSession(当然与聊天servlet相同的HttpSession)。
我的问题:让我们假设一个用户通过聊天servlet聊了1个小时,并决定在这个小时后通过我的头像servlet更改他的头像图片。因为我用websocket工作,页面永远不会重新加载,聊天servlet只在开始(1小时前)调用,以建立websocket连接。
所以我猜,即使用户是在线和活动的所有时间,会话将过期,当用户尝试使用头像servlet(1小时后)。
我的假设正确吗?有人有这个主题的经验或知道更好的解决方案吗?
谢谢
您可以每隔x分钟发送一个ajax请求,该请求只包含会话id,因此基本上'触摸'会话。这样,只要用户打开聊天窗口,会话就保持活跃。关闭聊天窗口,会话超时