我喜欢响应性的应用程序行为,我可以通过@PUSH实现这种行为。这种方法的缺点-网络套接字的问题,停止工作的原因未知的原因在我的iPhone后,一些不可预测的时间。我现在知道的唯一解决方案是在浏览器中刷新应用程序。也许这是个古怪的网络也许是别的什么..。我现在不知道。
如何使用@PUSH:我用许多块加载页面。比方说portlets。我首先在占位符上显示ProgressBar,然后用@PUSH异步加载其内容。当它起作用时,它会完美地工作。
为了避免websockets的问题,我正在考虑其他方法,例如:
在没有@PUSH的情况下,有什么方法可以用Vaadin实现同样的目标吗?我仍然希望先向用户显示ProgressBar并执行XHR请求,然后异步加载portlet内容。是否有可能像我现在这样在客户端单独调用服务器而不推送服务器端执行这样的异步逻辑?
现在,在没有PUSH的情况下,所有东西都在一个UIDL响应中交付给客户端,即使我试图显示ProgressBar…它不会显示,因为它将在一个带有portlet内容数据的UIDL批处理中发送到客户端,在其中,我将ProgressBar的可见性更改为false。
发布于 2022-11-19 07:20:12
您可以做的一件事是使用UI轮询代替。这样,客户机将定期向服务器发送HTTP请求,以检查是否有任何新的更改要获取。您可以使用setPollInterval方法在UI中启用该方法。
您可以添加一些自己的逻辑,以便在启动某个背景获取时启用轮询,并在为该用户加载所有内容时再次禁用它。
最后,我还想指出,即使网络连接是片状的,websocket连接也应该恢复,因此在您的情况下,可能会出现框架处理不当的情况。如果您有任何关于这种情况的其他提示,那么请在https://github.com/vaadin/flow/issues/new/choose打开一张票,以便我们可以尝试找到并修复它。
https://stackoverflow.com/questions/74495909
复制相似问题