【问题标题】:VAADIN: Size of UI.access() push queueVAADIN:UI.access() 推送队列的大小
【发布时间】:2019-09-19 12:17:16
【问题描述】:

我想监控我向知名客户的推送 UI.access() ... 服务器端的序列。

背景是我必须向我的客户传播大量推送,我 想确保没有任何东西排队。

我发现只有客户端 RPCQueue 具有 size(),但我不知道它是否正确,现在正在搜索如何访问它。

感谢任何提示。

格里

【问题讨论】:

  • 我会使用 Chrome 开发工具的网络选项卡,可能暂时使用长轮询模式进行推送测试。
  • 如果您有很多推送活动,最好关注这一点。一般的经验法则是不要长时间锁定 UI,即尽可能保持推送操作的原子性。
  • 谢谢,但我想从我的(服务器)代码内部查看队列。因为我不使用 Chrome,所以它不是一个选项。 "... as atomic as possible" ,意思是尽可能短,但是度量是什么?

标签: user-interface queue vaadin


【解决方案1】:

如果您想知道已使用UI.access 排队但尚未运行的任务队列的大小,则可以使用VaadinSession.getPendingAccessQueue

然而,这不会给出完整的画面,因为它不包括已应用于服务器端状态的更改(即UI.access 任务已被执行)但尚未发送到客户端。根据更改类型和您使用的 Vaadin 版本,这些类型的更改会在几个不同的位置进行跟踪。

对于这种用例,最好使用内置的beforeClientResponse 功能尽可能晚地应用您自己的更改,而不是急切地应用更改。

对于高达 8 的 Vaadin 版本,您可以通过覆盖组件或扩展类中的 beforeClientResponse 方法来做到这一点。您需要使用markAsDirty() 来确保最终会为该实例运行beforeClientResponse

在 Vaadin 10 和更新版本中,您可以使用 UI.beforeClientResponse 向其提供一个回调,该回调将由框架在适当的时间运行一次。

【讨论】:

  • 非常感谢您的详细而富有表现力的回答!格里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 2014-11-05
  • 2010-11-24
相关资源
最近更新 更多