Vaadin 7 Push与Eventbus+立即模式组合的区别

Difference between Vaadin 7 Push and combination of Eventbus + immediate mode

我需要更新不同的字段(tinycon 和按钮上的徽章,类似于 facebook 上的按钮),指示我的 Vaadin7-Webapp 中已登录用户的未读消息数。

所以我开始设置 Vaadin 7 推送功能但没有成功。在最新的 Tomcat(测试:7.0.61 和 8.0.30)和最新的 Vaadin (7.5.10) 上,它只是不起作用。没有错误消息,也没有推送。来自 https://vaadin.com/wiki/-/wiki/Main/Enabling+server+push 的 PushDemo 也什么也没做。我猜测 我公司的防病毒软件中断了底层的 websocket 通信。

但最后,我在没有 Vaadin Push 的情况下,通过 Eventbus (Guava) 发送事件并设置 setimmediate(true) 实现了预期的结果(=> 在运行时根据事件动态更新字段标签) ) 在相关的 GUI 字段上。

问题:这是否意味着我根本不需要 Vaadin Push 来实现所需的功能,或者我是否遗漏了什么? Push/Websockets 我有什么优势/我的实际解决方案有什么缺点还是类似于 Vaadin-Push 解决方案?

简化问题:

(From result aspects): Vaadin 7 Push equals Eventbus + immediate fields.

?

setImmediate(true) 不会推送或轮询您的服务器!

当对象在客户端触发事件时,它只是进行一次服务器往返。 另请参阅 this 关于 setImmediate 的讨论。

轮询和推送的区别是:

  • 推送:服务器通知客户端更改,否则两者之间没有流量
  • 轮询:客户端每隔 X 秒询问服务器是否已完成更改
  • setImmediate(true):仅当客户端向服务器发送请求时更新(主要是在您的UI中定义的一些EventListeners。当用户不移动鼠标时,不会显示任何更新

如果推送不起作用,最好使用 polling 对象,它每 x 秒进行一次服务器交互。 progressbar组件可以是这样的东西。