繁体   English   中英

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

[英]Websocket: maintain user session after page reloading

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

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

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

编辑:面临下一个问题 :如何决定何时删除会话? 我在服务器端有一个对等对象,不过是websocket会话容器。 onClose方法上删除Peer,而onClose方法又在droping客户端websocket上调用。 问题来了:当用户按F5键->客户端websocket损坏->服务器删除适当的websocket->客户端尝试重新加载页面并检查是否有任何会话并没有发现。 另一方面,我根本无法停止删除y个同伴(会话)。

问题:如何告诉服务器何时删除对等节点?

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

验证WebSocket连接上后首次WebSocket连接,设置cookie的,并且一旦有新连接重新检查的cookie。

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

如果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是否存储在DB中以供登录用户使用
  6. 如果是这样,WebSocket连接成功。 如果不是,则WebSocket服务器不会建立连接,而是将用户重定向到1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM