【发布时间】:2014-03-03 02:14:30
【问题描述】:
我在 Vaadin 7 中的服务器推送支持方面遇到了一些严重问题,而且很难确定问题所在。我已经按照 Vaadin 中关于启用服务器推送的所有步骤进行操作,包括将 vaadin-push.jar 文件添加到 WEB-INF/lib,将“asyncSupported = true”参数添加到 @WebServlet 注释,以及添加@Push 注释到 UI 类。 (我还尝试在部署描述符中指定等效项。)我还将 org.atmosphere.useWebSocketAndServlet3=true 属性添加到我的 Tomcat 7 服务器的 catalina.properties 文件中,如 https://vaadin.com/wiki/-/wiki/Main/Working%20around%20push%20issues 中所建议的那样。
我发现服务器推送支持非常古怪,因此很难识别问题。比如在开发代码时,服务器往往不会自动重启;仅在我关闭浏览器(不仅仅是浏览器窗口)时识别新代码,停止服务器并重新启动 Eclipse;缺少这些步骤中的任何一个都将导致服务器推送无法正常工作。请注意,此问题仅在启用服务器推送时发生。我读到一些关于启用推送时会话不会过期的内容 (https://vaadin.com/forum#!/thread/3576361),所以也许这就是原因..
我经常遇到可疑的日志消息:
Mar 02, 2014 9:25:45 PM com.vaadin.server.communication.PushHandler$3 run
WARNING: Could not find push connection to close: 38450652-2a2b-4221-8300-8313e9c4779a with
transport WEBSOCKET
Mar 02, 2014 9:25:45 PM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load
java.nio.ByteBuffer.
Atmosphere 似乎正在寻找异步支持:
INFO: Atmosphere is using async support:
org.atmosphere.container.Tomcat7AsyncSupportWithWebSocket running under container: Apache
Tomcat/7.0.47
我也发现了这个错误;不知道这是否表明一个严重的问题(没有尝试解决它,因为我不想进入 Atmosphere 的东西):
WARNING: No BroadcasterCache configured. Broadcasted message between client reconnection will be
LOST. It is recommended to configure the org.atmosphere.cache.UUIDBroadcasterCache
也就是说,Firefox 与 Server Push 配合得很好,而 Chrome 则存在问题并且 IE 会出现错误(惊喜!)。特别是,Chrome 通常需要很长时间才能将 UI 交互(例如,按钮推送)传达给服务器,从而在右上角出现一个微调器(将颜色从黄色变为橙色再变为红色)。当多个窗口打开时,IE 只会更新错误的 UI 组件。所以,只要每个用户都使用 Firefox 就没有问题,但我无法假设。
我看到了这篇文章,其中开发人员表达了他们对该功能的不满:https://vaadin.com/forum#!/thread/4040408。这是一篇近期发布的文章,因此听起来不太乐观。我需要服务器推送功能的唯一原因是允许 ChatBox 插件 (https://vaadin.com/directory/-/directory/addon/chatbox) 实时更新。
有什么想法吗?有没有人遇到过这类错误并设法得到一些解决方法?或者更好的是,有没有人让 ChatBox 插件与服务器推送一起使用?
谢谢,
威廉
【问题讨论】:
-
对,这很奇怪。你使用 SpringVaadinIntegration 插件吗?
-
感谢您的回答。不,只是使用普通的旧 Vaadin。
-
不确定应用程序@William 的要求是什么,但我遇到了类似的问题,无法解决。我改为使用
UI.setPollInterval(),它似乎工作并且可靠。这是一项民意调查,而不是推动,但至少它有效。 -
这似乎已经解决了,谢谢@hmjd!
标签: vaadin add-on server-push