我已经从一个例子,我找到工作,这里的链接到Git的回购:Vaadin春季安全
https://github.com/basakpie/vaadin8-spring-security-sample
它的伟大工程,这正是我需要的,除了一两件事:我需要服务器推送。
这是我到目前为止已经完成:
- 加入Vaadin推依赖
添加以下行MainUI.init()方法的开始:
getPushConfiguration().setTransport(Transport.WEBSOCKET); getPushConfiguration().setPushMode(PushMode.AUTOMATIC);
将以下字段添加到MainUI类中:
Label time = new Label(); Timer timer;
添加了以下方法给MainUI类:
private void updateTime() { access(() -> time.setValue(String.format("The server-side time is %s", LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))))); }
最后,增加了以下的MainUI.init的end()方法:
timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { updateTime(); } }, 1000L, 1000L);
它主要作品。我能够看到当前系统时间每秒更新一次。但是当我在浏览器中刷新时,应用程序只会挂在vaadin加载微调器上。没有错误消息。
我曾尝试以下办法:从init()
添加方法
public void attach() {
getPushConfiguration().setTransport(Transport.WEBSOCKET);
getPushConfiguration().setPushMode(PushMode.AUTOMATIC);
}
和去除getPushConfiguration
线这解决了悬挂问题,但推不工作 - 无错误,只是时间根本不显示。
我也尝试在MainUI
上添加@Push
注释。这会导致与之前相同的行为 - 冻结刷新。
我该如何解决这个问题?欢迎大家提出意见。
感谢您的提示。不幸的是我看到相同的行为:( – NickJ