我在spring boot+vaadin应用程序中成功地启用了redis,它在我的计算机上运行良好。应用程序正在一个较慢的环境中进行测试运行,并且多次出现错误occours。
WARN c.v.s.communication.ServerRpcHandler [ServerRpcHandler.java : 266] - Unexpected message id from the client. Expected: 248, got: 249
当vaadinsession的序列化/反序列化花费太长时间时,似乎会发生这种情况。例如,我有一个页面有多个复选框。我点击第一个,然后是第二个和第三个。在此之后,将抛出上一个警告,并显示页面的上一个状态。在这种情况下,它可能没有任何选中的复选框,或者有一个或两个选中的复选框。在极少数情况下,它能正常工作。
我想不出这个问题的解决办法。我尝试过的一件事是立即显示一个加载指示器(100ms)(默认值是在加载300毫秒之后),但这并不能解决问题。
我是否可以配置序列化/反序列化何时发生,而不是每次ui更改,或者通过将vaadinsession的一部分保留在其中使其更快?(我需要当前页面上的数据,这样我就不能让ui组件成为暂时的。)
最佳答案
我们在工作场所讨论了这个问题,我们认为组件工作正常。当序列化速度比下一个请求的反序列化速度慢时,就会出现此问题。(每个ui更改都以反序列化开始以获取最新状态,然后序列化修改后的状态。)我的解决方案是创建一个方面,该方面存储发送用于序列化的最新vaadinsession,并将每个反序列化的vaadinsession与存储的vaadinsession进行比较。我保留LastProcessedClientToServerID较高的那个。这几乎每次都能解决问题。