【问题标题】:Vaadin7: Tracking whether a user is active (DOM Event Handler)Vaadin7:跟踪用户是否处于活动状态(DOM 事件处理程序)
【发布时间】:2013-04-04 08:51:25
【问题描述】:

我们目前正在将我们的应用程序移植到 vaadin 7,我想跟踪用户在过去 30 年代左右是否处于活动状态。 我们曾经在自定义 CommunicationManager 中跟踪用户活动,但由于此类已被弃用,我想我们可能不得不尝试不同的方式。

我创建了一个扩展,用于扩展 UI。

为了简单起见,假设我们将点击和键盘使用计为用户活动:

// this is the extend method in the extension connector
@Override
protected void extend (ServerConnector target) {
  UIConnector uiConnector = (UIConnector) target;
  VUI uiWidget = uiConnector.getWidget();
  uiWidget.addDomHandler(this.keyPressed(), KeyPressEvent.getType());
  uiWidget.addDomHandler(this.mouseClicked(), ClickEvent.getType());
}

然后,扩展程序将安排一个计时器,该计时器将每 30 秒通过 RPC 调用一次服务器,但前提是用户一直处于活动状态。 这个定时器有效。不起作用的是 DOM 事件,它们似乎永远无法到达我添加的事件侦听器。

我做错了什么?

【问题讨论】:

    标签: java web-applications vaadin


    【解决方案1】:

    根据你的实现,我建议你试试Refresher add-on。它以类似的方式工作,但让您可以更好地控制轮询间隔、服务器端侦听器。另外,您不必维护它。

    另一种选择是利用 Vaadin 轮询支持(请参阅 https://vaadin.com/wiki/-/wiki/Main/Using%20polling)。

    【讨论】:

    • 复习者不会做同样的事情。事实上,复习正是最初提出问题的原因。当某个页面上有刷新时,我们无法跟踪会话的请求活动。用户会话永远不会超时,因为刷新器会不断创建请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2014-05-24
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多