如何检测 EmberJS 中的一段时间不活动?
How to detect a period of inactivity in EmberJS?
我正在尝试检测我的 EmberJS 应用程序中用户不活动的时间段,以便在一段时间后我可以调用 session.inValidate
方法并撤销他们的身份验证。
我能找到的唯一资源是一篇文章 here which I was advised in an original question 已经过时并且不使用当前的 Ember 概念。
过时的文章建议将 属性 添加到 App
对象并在 mousemove
等某些事件上更新 属性 但我无法做到在 app.js
或配置环境中找到正确设置此 属性 的位置。
ember-concurrency 被推荐,但在查看了一些文档后,我仍然不明白此类代码在 EmberJS 应用程序结构中的位置。
不幸的是,在提供代码示例之前我卡住了。任何建议表示赞赏。
编辑:根据@hernanvicente 的优秀问题,我将不活动定义为 'no user input'。所以在 X 期间
内没有 mousemove
或 key press
事件
这里的难题是 activity 的实际含义。一般来说,我会反对你的想法。无法知道用户是否真的还在浏览您的网页。
但是如果你真的想在用户一段时间内没有做某事之后做某事,那么有趣的问题是在哪里放置代码。
您在这里有多种选择,但可能不是最糟糕的选择是使用应用程序控制器。你也可以使用一个服务,但是你需要在某个地方使用那个服务来初始化它。您可以 也 只使用一个组件。
如果你想将它与身份验证结合起来,你可以考虑使用现有的 session
服务。
然而,其他一切并不是 ember 具体的。您可以只在应用程序控制器 init
挂钩中放置一些代码并访问 document.addEventListener()
。然后你可以只保存一个时间戳并采取相应的行动。
为了让 API 更好地等待 ,您可以利用 ember-concurrency
和 restartable
任务:
didSomething: task(function * () {
yield timeout(1000); // number of miliseconds to wait
logout();
}).restartable(),
此处logout()
会在任务未被调用1秒后被调用。关于 task concurrency and restarable
can be found here.
的一个很好的视觉演示
我正在尝试检测我的 EmberJS 应用程序中用户不活动的时间段,以便在一段时间后我可以调用 session.inValidate
方法并撤销他们的身份验证。
我能找到的唯一资源是一篇文章 here which I was advised in an original question 已经过时并且不使用当前的 Ember 概念。
过时的文章建议将 属性 添加到 App
对象并在 mousemove
等某些事件上更新 属性 但我无法做到在 app.js
或配置环境中找到正确设置此 属性 的位置。
ember-concurrency 被推荐,但在查看了一些文档后,我仍然不明白此类代码在 EmberJS 应用程序结构中的位置。
不幸的是,在提供代码示例之前我卡住了。任何建议表示赞赏。
编辑:根据@hernanvicente 的优秀问题,我将不活动定义为 'no user input'。所以在 X 期间
内没有mousemove
或 key press
事件
这里的难题是 activity 的实际含义。一般来说,我会反对你的想法。无法知道用户是否真的还在浏览您的网页。
但是如果你真的想在用户一段时间内没有做某事之后做某事,那么有趣的问题是在哪里放置代码。
您在这里有多种选择,但可能不是最糟糕的选择是使用应用程序控制器。你也可以使用一个服务,但是你需要在某个地方使用那个服务来初始化它。您可以 也 只使用一个组件。
如果你想将它与身份验证结合起来,你可以考虑使用现有的 session
服务。
然而,其他一切并不是 ember 具体的。您可以只在应用程序控制器 init
挂钩中放置一些代码并访问 document.addEventListener()
。然后你可以只保存一个时间戳并采取相应的行动。
为了让 API 更好地等待 ,您可以利用 ember-concurrency
和 restartable
任务:
didSomething: task(function * () {
yield timeout(1000); // number of miliseconds to wait
logout();
}).restartable(),
此处logout()
会在任务未被调用1秒后被调用。关于 task concurrency and restarable
can be found here.