0

我正在使用此代码使浏览器关闭时的用户会话无效。

Window.addCloseHandler(new CloseHandler<Window>() {
    @Override
    public void onClose(CloseEvent<Window> event) {
        logOut();    
    }         
});

logOut 方法只是调用 RPC 并使会话无效.. 一旦我关闭浏览器,它就会关闭,然后调用服务器并到达成功使会话无效的服务器。

但是当我将我的应用程序放在 Tomcat 或任何网络托管上时..此功能停止工作..

任何想法..可能是什么解决方案

4

1 回答 1

1

我认为,您的问题是,在 rcp 调用有机会将基础 XMLHTTPRequest 发送到服务器之前,浏览器已关闭。

我会给 WindowClosingHandler 一个机会:

Window.addWindowClosingHandler(new ClosingHandler() {
  @Override
  public void onWindowClosing(ClosingEvent event) {
    logOut();
  }
});

如果这不起作用,请尝试添加一个由 onBeforeUnload 事件调用的本机 JavaScript 函数,并使用 JSNI 调用您的 logOut() 方法。

于 2013-10-04T09:04:17.450 回答