检测Vaadin应用程序中的浏览器关闭

Sco*_*t S 5 vaadin

如何在Vaadin中检测浏览器的选项卡或窗口何时关闭?
我的情况是我有一个后台线程,当用户在浏览器中输入或退出视图时启动和停止.根据导航器的更改侦听器的beforeViewChange和afterViewChange事件启动或停止线程.当我在应用程序内切换视图时,一切正常.

我的问题是如果后台线程的视图处于活动状态并且用户关闭浏览器选项卡或窗口,我不知道如何检测此闭包,因此我可以停止后台线程.目前,如果我关闭浏览器,后端线程将继续在服务器上运行.

小智 6

您可以向UI添加DetachListener.当服务器错过来自客户端的三个连续心跳信号时,发送DetachEvent.

addDetachListener(new DetachListener() {
    @Override
    public void detach(DetachEvent event) {
    ... closeBackgroundThread()
    }
});
Run Code Online (Sandbox Code Playgroud)

有关UI过期的详细信息,请参阅https://vaadin.com/docs/-/part/framework/application/application-lifecycle.html.