From 0e34a27d2481b96d28eec112bd876dd4d9f8ece5 Mon Sep 17 00:00:00 2001 From: Marcus Hellberg Date: Thu, 7 Mar 2024 14:07:25 -0800 Subject: [PATCH] Complete push example --- .../com/baeldung/introduction/PushView.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/vaadin/src/main/java/com/baeldung/introduction/PushView.java b/vaadin/src/main/java/com/baeldung/introduction/PushView.java index 28d8162003..b49aa06e4d 100644 --- a/vaadin/src/main/java/com/baeldung/introduction/PushView.java +++ b/vaadin/src/main/java/com/baeldung/introduction/PushView.java @@ -1,6 +1,5 @@ package com.baeldung.introduction; -import com.vaadin.flow.component.html.H1; import com.vaadin.flow.component.html.Span; import com.vaadin.flow.component.orderedlayout.VerticalLayout; import com.vaadin.flow.router.Route; @@ -16,12 +15,18 @@ public class PushView extends VerticalLayout { public PushView() { var output = new Span(); - add(new H1("Server Push"), output); + // Publish server time once a second + var serverTime = Flux.interval(Duration.ofSeconds(1)) + .map(o -> "Server time: " + Instant.now()); - Flux.interval(Duration.ofSeconds(1)) - .map(o -> "Server time: " + Instant.now()) - .subscribe(time -> getUI().ifPresent(ui -> ui.access(() -> { - output.setText(time); - }))); + + serverTime.subscribe(time -> + // ui.access is required to update the UI from a background thread + getUI().ifPresent(ui -> + ui.access(() -> output.setText(time)) + ) + ); + + add(output); } }