соединение через веб-сокет не работает с vaadin

я запрограммировал веб-сайт, который действует как клиент веб-сокета для моего приложения для Android, который действует как сервер веб-сокета в моей сети WiFi. изначально я написал его только с javascript/jquery, и он уже работал без проблем, но поскольку я был очарован vaadin, я полностью переписал его с помощью vaadin, и он уже работает на локальном tomcat 7 или 8, но не на удаленном tomcat 7 или 8. метод onOpen сервера Android никогда не вызывается. сервер версии jquery такой же, как и сервер версии vaadin, но когда я пытаюсь запустить свою страницу, я получаю эту ошибку, и страница не подключается к моему телефону, хотя я могу пропинговать свой мобильный телефон:

vaadinPush.debug.js:11276: WebSocket connection to 'ws://serialcall.rdroid.info/PUSH/?v-uiId=3&v-csrfToken=18797926-2579-4599-a0af-29729f9deb88&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: 500

это информация журнала vaadin на неработающем удаленном сервере

371ms   Queuing push message: {"csrfToken":"0b112c17-8c20-4307-8d2b-871589d720a6", "rpc":[["505","com.vaadin.shared.ui.ui.UIServerRpc","resize",["923","1280","1280","923"]],["506","org.vaadin.jouni.animator.client.AnimatorServerRpc","preserveStyles",[{"useKeyframeAnimation":false, "animationTarget":"546", "duration":"2000", "delay":"0", "css":{"properties":{"opacity":"0.2"}}, "easing":"DEFAULT", "id":"25", "iterationCount":"1", "preserveStyles":true}]]], "syncId":1}
720ms   Push connection closed
721ms   Push connection using primary method (websocket) failed. Trying with long-polling
1131ms  Push connection established using long-polling
1132ms  Sending push message: {"csrfToken":"0b112c17-8c20-4307-8d2b-871589d720a6", "rpc":[["505","com.vaadin.shared.ui.ui.UIServerRpc","resize",["923","1280","1280","923"]],["506","org.vaadin.jouni.animator.client.AnimatorServerRpc","preserveStyles",[{"useKeyframeAnimation":false, "animationTarget":"546", "duration":"2000", "delay":"0", "css":{"properties":{"opacity":"0.2"}}, "easing":"DEFAULT", "id":"25", "iterationCount":"1", "preserveStyles":true}]]], "syncId":1}
1154ms  No onClose was received before reconnect. Forcing state to closed.

вот так выглядит лог-сообщение vaadin на рабочем локальном сервере:

1008ms  Making UIDL Request with params: {"csrfToken":"6be927e0-1e38-407d-b8fe-744d83a23e43", "rpc":[["1614","com.vaadin.shared.ui.ui.UIServerRpc","resize",["923","1280","1280","923"]],["1615","org.vaadin.jouni.animator.client.AnimatorServerRpc","preserveStyles",[{"useKeyframeAnimation":false, "animationTarget":"1655", "duration":"2000", "delay":"0", "css":{"properties":{"opacity":"0.2"}}, "easing":"DEFAULT", "id":"20", "iterationCount":"1", "preserveStyles":true}]]], "syncId":1}
1009ms  Queuing push message: {"csrfToken":"6be927e0-1e38-407d-b8fe-744d83a23e43", "rpc":[["1614","com.vaadin.shared.ui.ui.UIServerRpc","resize",["923","1280","1280","923"]],["1615","org.vaadin.jouni.animator.client.AnimatorServerRpc","preserveStyles",[{"useKeyframeAnimation":false, "animationTarget":"1655", "duration":"2000", "delay":"0", "css":{"properties":{"opacity":"0.2"}}, "easing":"DEFAULT", "id":"20", "iterationCount":"1", "preserveStyles":true}]]], "syncId":1}
1303ms  Push connection established using websocket

я использую tooallnate в качестве клиента веб-сокета, и у меня одна и та же версия tomcat и одна и та же версия java на сервере и на моем локальном компьютере, даже когда я отключаю брандмауэр. никаких исключений не выбрасывается, и я не мог понять, почему это не работает.

есть идеи, что я делаю неправильно?


person richard    schedule 08.02.2015    source источник


Ответы (1)


Похоже, вы развернули свое приложение в экземпляре Jelastic без общедоступного IP-адреса, что означает, что все запросы были проксированы nginx. Как упоминалось здесь, вы должны получить общедоступный IP-адрес, чтобы ваше приложение могло работать с WebSockets в Jelastic.

person Aless    schedule 08.02.2015
comment
но jelastic был просто дополнительной попыткой после того, как он потерпел неудачу на моем обычном сервере. я получил точно такие же сообщения об ошибках на обоих. - person richard; 08.02.2015
comment
Я удалил информацию о jelastic в своем посте, потому что понял, что это просто сбивает с толку. - person richard; 08.02.2015
comment
Кажется, что сервер приложений закрывает соединение через веб-сокет. Вы пытались изменить значение timeOut на сервере приложений или вызывать sendPing примерно каждые 30 секунд? - person Aless; 08.02.2015
comment
сервер андроида вообще никогда не открывается. метод onOpen никогда не достигается. - person richard; 09.02.2015