Push in Vaadin 7 app的最小例子(" @ Push")

时间:2015-01-06 22:37:05

标签: java vaadin vaadin7 web-push

我想看看在Vaadin 7中使用新Push technology的最小例子,例如新的@Push注释。

我在使用server-push在我的应用中工作时遇到问题。在尝试修复自己的应用之前,我想尝试一个简单的示例应用。

2 个答案:

答案 0 :(得分:24)

简化 The Book of Vaadin

中的例子

Book Of Vaadin包含有关推送的章节,包括使用Vaadin Charts的示例。

以下是我的代码。虽然基于上面提到的Vaadin Charts示例,但我通过将Chart对象替换为简单的Label对象来简化它。标签每秒钟更新一次,以告诉您当前时间。

screen shot of example Vaadin app telling current time in UTC as text

仅供使用示例 - 在实际项目中使用执行程序

警告:我的示例是为了简单起见而构建的, 并非用作生产代码 。睡眠线程是管理预定线程工作的原始和笨拙方式。 Java为这种工作提供了Executor工具。在实际项目中,我将使用ScheduledExecutorService而不是单个睡眠Thread对象来安排我们的任务(告知时间)。相关提示:切勿在Servlet环境中使用Timer。有关更全面,更真实的示例,请参阅my Answer,了解有关推送Vaadin的类似问题。

我在此示例中使用了其他快捷方式,例如:我将Label小部件直接放在UI上,而实际工作则使用Layout来包含{{1} }}。

我的配置

我的代码在NetBeans 8.0.2中使用Vaadin 7.3.7和Java 8 Update 25,在Mac OS X 10.8.5(Mountain Lion)上使用Tomcat 8.0.15。

Push技术相对较新,特别是WebSocket种类。请务必使用最新版本的Web服务器,例如Tomcat 7或8的最新更新。

如何使用此示例

此代码是单个文件,Label文件。要使用此代码:

  1. 在您选择的IDE中创建一个新的默认Vaadin应用程序。
  2. 在修改之前,让该示例成功运行。
  3. 使用以下代码替换MyUI.java类的内容。
  4. MyUI注释

    除了中间的代码,请注意我们如何将@Push注释添加到@Push类定义中。

    示例代码

    MyUI

答案 1 :(得分:1)

Here是一个简单但完整的Vaadin 8示例,演示了如何使用服务器推送和Java EE消息传递API,使用Broadcaster pattern中描述的Vaadin docs在不同的UI之间发送消息。如果您对向其他用户发送消息或广播不感兴趣,请仅查看ReceiveMessageUI

原则上,这一切归结为以下几点:

  1. 使用@Push注释Vaadin UI以启用服务器推送(默认情况下通过WebSocket连接)
  2. 从其他线程访问UI时更新access()的UI更新,默认情况下会自动发送更新:

    getUI().access(() -> layout.addComponent(new Label("Hello!")));
    
  3. 使用Broadcaster pattern向其他用户发布消息并订阅他们的消息。