websocket връзката е неуспешна с vaadin

Програмирах уебсайт, който действа като websocket клиент за моето приложение за Android, което действа като websocket сървър в моята 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 log на работещия локален сървър:

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

използвам tootallnate като websocket клиент и имам същата tomcat-версия и същата javaversion на сървъра и на моя локален компютър, дори когато деактивирам защитната стена. не се хвърля изключение и не може да разбере защо не работи.

някакви идеи какво правя грешно?


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
Изглежда, че сървърът на приложения затваря уебсокет връзката. Опитахте ли да промените стойността на времето за изчакване в сървъра на приложения или да извикате sendPing на всеки 30 секунди? - person Aless; 08.02.2015
comment
сървърът на android изобщо не се отваря. методът onOpen никога не се достига. - person richard; 09.02.2015