首页 > 解决方案 > VAADIN:UI.access() 推送队列的大小

问题描述

我想在服务器端使用著名的 UI.access() ... 序列监视我对客户端的推送。

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

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

感谢您的任何提示。

格里

标签: user-interfacequeuevaadin

解决方案


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

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

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

对于最高 8 版的 Vaadin,您可以通过覆盖beforeClientResponse组件或扩展类中的方法来完成此操作。您需要使用markAsDirty()以确保beforeClientResponse最终将为该实例运行。

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


推荐阅读