Ваадин не может установить соединение Websocket на OpenShift

Я использую Vaadin 7.3 с Tomcat8 (собранный вручную из источников на сервере) на сервере OpenShift. Моя другая установка - Tomcat7 7.0.54 также на OpenShift. Моя проблема появляется на обеих этих конфигурациях. Вот что происходит: когда я открываю свое приложение Vaadin с включенной поддержкой @Push, я получаю следующую ошибку:

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 в комплекте с атмосферой-runtime-2.1.2.vaadin3.jar, от которого я не уверен, смогу ли я избавиться. В этой статье об атмосфере https://github.com/Atmosphere/atmosphere/wiki/Installing-AtmosphereServlet-with-or-without-native-support предлагается использование атмосферы-среды выполнения, но похоже, что Vaadin использует какую-то настроенную версию...

Странно на локальном хосте (в моей среде разработки) соединение WebSockets устанавливается без каких-либо проблем...

Я нахожусь на хорошем пути, чтобы решить проблему, или я где-то еще?;-) Ребята, вы знаете решение этой проблемы? Я был бы признателен за ответ, потому что согласование между веб-сокетами и длительным опросом занимает много времени - мне нужно подождать около 2 минут, прежде чем приложение отреагирует, а иногда оно никогда не завершится (вверху экрана мигает индикатор выполнения, который никогда не достигает 100%). Мой клиент, которому я представил демонстрационную версию приложения, не может подключиться в 9 из 10 случаев, и поэтому я полностью застрял - не увидев демонстрацию, он не пойдет со мной дальше;(

1 ответ

Главный прокси-сервер по умолчанию, используемый OpenShift, пока не поддерживает WebSockets. Я слышал, что они скоро обновят его. До этого вы можете использовать их экспериментальный альтернативный прокси-сервер из порта 8000, который уже поддерживает веб-сокеты. В вашем случае это может быть достигнуто с адреса:

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

Также обратите внимание, что опрос (UI.setPollingInterval(int)), часто достаточно хорош для большинства целей.

Другие вопросы по тегам