0

我正试图解决从我的web应用程序中超时用户的问题。我目前使用NG2空闲,它似乎仅在活动窗口上工作,而不是被跟踪服务器端(角服务器的WebPack)如何在断开连接或关闭浏览器后注销用户?

我需要在除了上面的一个来处理这两个事件:

  • 在浏览器关闭
  • 在连接丢失(停电,蓝屏等。)

测试后,我超时没有被关闭窗口后跟踪。 NG2空闲具有模块,如保活,但我不完全知道如何使用它,如果它解决我的问题

如果需要

我会提供代码谢谢

当您关闭

回答

0

您的浏览器会话会破坏。所以你可以使用会话来注销。

+0

用户连接到我的服务器的情况如何?在关闭浏览器或发生崩溃后30分钟,我想超时。我如何声明一个全局变量并根据用户活动对其进行更新?如果用户空闲(或发生崩溃),计时器将开始30分钟。 30分钟后,用户将自动超时并断开连接。 我正在使用ng2-idle,但在关闭会话后,计时器也随之消失。我无法跟踪服务器上的超时时间 –

1

主要问题是,客户端和服务器以无状态方式进行通信。这意味着如果用户断开连接,则不会有人知道。

如果您的浏览器具有关闭或导航到其他站点的挂钩功能,则可以使用该功能并发送注销请求。

与会话过期有关的另一件事,你应该使用它。如果您使用的是令牌,则需要将其列入黑名单,只要该会话可能有效(或者是),就可以为非活动。

断开连接是一个主要问题(会话过期试图以某种方式解决)。 更复杂的方式,如果注销断开连接非常重要,您可能需要使用websockets或http long polling。您需要发送心跳信号,如果没有响应,一段时间后您将自动注销用户。

希望这些想法有点帮助。

+0

“您需要发送心跳”的确如此!但是,我如何确保我的听众始终在运行并主动跟踪心跳?我的主要问题是追踪超时的变量会随着会话关闭而被销毁。 –

+0

深入了解Websockets。你只需要确保连接并发送心跳,如果它不响应,当会话结束。就那么简单。离开页面等等也会导致这种情况,所以你刚刚处理了不同的场景。 – sascha10000

相关问题