我有一个简单的单页应用程序,使用 jetty websockets 在服务器和客户端之间进行通信。
问题:每次重新加载页面时,我的 websocket 连接都会被禁用并初始化新的连接。问题是用户应该在每次页面刷新时重新登录。
问题: 如何消除页面刷新时重新登录的需要?
编辑:面临下一个问题:如何决定何时应删除会话?我在服务器端有一个对等对象,它只是 websocket 会话容器。对等点通过
onClose
方法删除,该方法又在删除客户端 Websocket 时调用。问题来了:当用户按 F5 -> 客户端 websocket 损坏 -> 服务器删除相应的 websocket -> 客户端尝试重新加载页面并检查是否有任何会话,但什么也没找到。另一方面,我根本无法停止删除 y 对等点(会话)。
问题:我如何告诉服务器何时删除我的同伴?
为了消除在每次建立新连接时验证 WebSocket 连接的需要,您可以使用 cookie。
首次验证 WebSocket 连接,在 WebSocket 连接上设置 cookie ,并在新连接时重新检查 cookie。
这需要一个允许在 WebSocket 连接上读取和设置 cookie 的 WebSocket 服务器。如果 WebSocket 连接与包含打开 WebSocket 连接的 JavaScript 的 HTML 页面来自同一源,您还可以使用基于“正常”HTML 表单的登录加 cookie 过程:
您也可以在 JWT 中传递一些其他详细信息