getWorkpage().addLifecycleListener(new WorkpageDefaultLifecycleListener()
{
@Override
public void reactOnDestroyed()
{
if (m_thread != null)
m_thread.i_threadStop = true;
LongPollingMgr.remove(m_longPollingWebSocket);
}
});这只有在关闭应用程序时才会调用。
如果关闭或刷新浏览器页,则事件生成线程不会受到影响。它一直在跑。
怎么处理这事?
更新:问题是,jsp中缺少会话更紧密的组件。当网页刷新或关闭时,它将调用Dispatcher上的web (),这将调用我的reactOnDestroyed回调。它工作在工作页面级别和外部级别
发布于 2021-06-13 06:25:21
我只想总结一下:
由于会话未关闭,因此未调用该事件。浏览器不会告诉服务器“自行”关闭/刷新/.因此,默认行为是:会话在服务器端超时(然后调用reactOnDestroyed!--但这需要等待几分钟.)
通过向客户端对话框添加组件SESSIONCLOSER,JavaScript处理将在页面关闭/刷新/.因此,在这个场景中,会话会立即关闭,并且事件也会立即被调用。
所以,问题是会议没有结束。
顺便说一句:当我说“我们侧”上的“虚拟工作页”没有正确地处理事件时,我说得不对--确实如此。因此,您可以在任何级别上注册到当前的工作页,并在那里注册一个侦听器:它在关闭时将被正确通知。
发布于 2021-06-11 11:54:51
您是从Workpage级别(在工作场所内容部分打开的WebSocket对话框)启动==连接,还是从某个外部函数(工作场所管理周围的==函数)启动?
如果"Workpage-level":必须调用它!;-)
如果是“外部级别”:在这里您可以在某个伪工作页面侦听器中注册,但是这个没有处理。-那么该做什么:在关闭会话时,然后调用Dispatcher- called ()。请以某种方式在此销毁中注册关闭WebSocket。
https://stackoverflow.com/questions/67933538
复制相似问题