Websocket:在页面重新加载后维护用户会话

我有一个简单的单页应用程序,使用jetty websockets进行服务器和客户端之间的通信。

问题:每次重新加载页面时,我的websocket连接都被禁用,并且new被初始化。 问题是用户应该重新刷新每个页面刷新。

问题: 如何在页面刷新时消除重新登录的需要?

编辑:面临下一个问题 :如何决定何时删除会话? 我在服务器端有一个对等对象,除了websocket会话容器之外别无其他。 在onClose方法上删除Peer,而onClose方法又在droping客户端websocket上调用。 这里的问题来了:当用户按F5 – >客户端websocket被破坏 – >服务器删除相应的websocket – >客户端尝试重新加载页面并检查是否有任何会话和找不到。 另一方面,我根本不能停止删除同伴(会话)。

问题:如何告诉服务器何时删除我的同行?

为了消除在每个新连接建立时validationWebSocket连接的需要,您可以使用cookie。

首次validationWebSocket连接,在WebSocket连接上设置cookie,并在新连接时重新检查cookie。

这需要一个允许在WebSocket连接上读取和设置cookie的WebSocket服务器。

如果WebSocket连接的源自与包含打开WebSocket连接的JavaScript的HTML页面相同的源,则您还可以使用“普通”基于HTML表单的登录加cookie过程:

  1. 用户打开“login.html”,其中包含用于登录的HTML表单
  2. 用户输入用户名/密码,通过HTTP / POST将HTML表单提交到某个URL
  3. 服务器检查凭据,成功时生成随机cookie,存储cookie,并在HTTP / POST返回的HTML页面上设置cookie
  4. 后面这个返回的页面然后打开一个到服务器的WebSocket连接(它在同一个源上,因此设置了先前设置的cookie)
  5. 打开握手中的WebSocket服务器检查是否存在cookie,以及cookie是否存储在数据库中以供登录用户使用
  6. 如果是这样,WebSocket连接成功。 如果不是,则WebSocket服务器不会建立连接,而是将用户重定向到1。