Vaadin无法在OpenShift上建立Websocket连接

时间:2014-09-22 06:29:44

标签: websocket vaadin atmosphere

我在OpenShift服务器上使用Vaadin 7.3和Tomcat8(从服务器上的源手动构建)。我的其他设置是OpenShift上的Tomcat7 7.0.54。我的问题出现在这两个配置上。 发生了什么:当我在启用@Push支持的情况下打开我的Vaadin应用程序时,我收到以下错误:

WebSocket connection to 'ws://t8-drewconnect.rhcloud.com/web/PUSH/?v-uiId=0&v-csrfToken=4097664e-4d3b-4dd6-9474-0a6441986e9a&X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.1.5.vaadin4-jquery&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true' failed: Error during WebSocket handshake: Unexpected response code: 501 
​Websocket closed, reason: Connection was closed abnormally (that is, with no close frame being sent). vaadinPush.debug.js:13176
Websocket closed, wasClean: false vaadinPush.debug.js:13176
Mon Sep 22 07:39:46 GMT+200 2014 com.vaadin.client.VConsole
INFO: Push connection closed com.drewconnect.web.AppWidgetSet-0.js:4714
Websocket failed. Downgrading to Comet and resending vaadinPush.debug.js:13176
Mon Sep 22 07:39:46 GMT+200 2014 com.vaadin.client.VConsole
INFO: Push connection using primary method (websocket) failed. Trying with long-polling 

我花了很多时间在网上阅读,可以做些什么,阅读有关启用原生大气支持等等的内容,当我发现时,Vaadin将Atmosphere捆绑到大气运行时-2.1.2.vaadin3.jar,我不确定我是否可以摆脱它。这篇Atmosphere文章https://github.com/Atmosphere/atmosphere/wiki/Installing-AtmosphereServlet-with-or-without-native-support建议使用大气运行时本机,但看起来Vaadin使用了一些自定义版本......

奇怪的是在localhost(在我的开发环境中)正在建立WebSockets连接而没有任何问题......

我是一个很好的方法来解决问题,还是我完全在某个地方? ;-)你们知道这个问题的解决方案吗? 我很感激答案,因为websockets和长轮询之间的协商需要花费很多时间 - 我必须在应用程序做出反应之前等待大约2分钟,有时候它永远不会完成(在屏幕顶部那里' sa闪烁进度条,永远不会达到100%)。 我的客户,我已经提交了应用程序的演示,无法连接10个案例中的9个,所以我完全陷入困境 - 没有看到他赢得的演示,我不再继续跟我说话; (

1 个答案:

答案 0 :(得分:0)

OpenShift使用的默认前端代理尚不支持WebSockets。我听说他们即将更新。在此之前,您可以使用已支持Web套接字的端口8000中的实验性替代代理。在您的情况下,可以从地址:

到达

http://t8-drewconnect.rhcloud.com:8000/web/

另请注意,轮询(UI.setPollingInterval(int))通常足以满足大多数用途。