WebSockets wirft 404 in Tomcat auf dem Server

Guten Morgen,

ich versuche einen WebSocket in Java zu entwickeln, der auch lokal, wenn ich ihn aus Eclipse aufrufe. Dazu habe ich einfach localhost:8080 aufgerufen, habe die Firefox Konsole aufgemacht und habe einfach den WebSocket erstellt:

new WebSocket('ws://localhost:8080/wsock/chat');

Läuft, keine Probleme.

Dann habe ich es auf meinem Server mittels Tomcat Web Application Manager deployed, jedoch bekomme ich da dann Fehler:

new WebSocket('ws://meinServer:8080/wsock/chat');
WebSocket { url: "ws://meinServer:8080/wsock/chat", readyState: 0, bufferedAmount: 0, onopen: null, onerror: null, onclose: null, extensions: "", protocol: "", onmessage: null, binaryType: "blob" }
Firefox kann keine Verbindung zu dem Server unter ws://meinServer:8080/wsock/chat aufbauen.

Ich habe etliche Themen im Netz dazu gelesen, jedoch hat nichts funktioniert. Ich weiß ehrlich gesagt nicht mehr weiter. Ich nahm an, dass es an den Ports oder so etwas liegt, aber selbst wenn ich direkt im Netzwerk bin geht es nicht.

Habt ihr Ideen, woran es liegt? Im Anhang ist die gezippte .war-Datei inklusive des Quellcodes. Ich wäre euch echt dankbar, wenn ihr mir sagen könntet, was ich da falsch mache.

Danke und nen guten Rutsch. :wink:

Entschuldigt bitte dass ich den originalen Beitrag nicht editiere, aber irgendwie scheine ich den Bearbeiten-Knopf nicht zu sehen. :eek:

Es hat sich noch einiges getan. Und zwar musste ich feststellen, dass der Tomcat 7.0.56 auf meinem Raspberry PI (Debian) keine websocket-jars hat. Nach einer Recherche habe ich einen Bugreport gefunden. Scheinbar wurden die vergessen und werden erst mit Tomcat 7.0.64 oder so nachgereicht, was noch nicht in den Paketquellen ist.
Also habe ich mir einfach Tomcat 7 von Apache geladen, entpackt und gestartet. Im Tomcat-Manager habe ich dann die wsock.war deployed. Das Ergebnis:

Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8080/wsock/chat aufbauen.

Beim Analysieren der Anfrage und der Antwort fiel auf, dass die Antwort kein upgrade enthält.
Anfrage:

Host: raspberrypi:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Sec-WebSocket-Version: 13
Origin: http://raspberrypi:8080
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: 0a80/+qiZ3mJ03bDgSV5kg==
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

Antwort

Content-Language: en
Content-Length: 971
Content-Type: text/html;charset=utf-8
Date: Fri, 01 Jan 2016 11:42:35 GMT
Server: Apache-Coyote/1.1

Dann sind mir die “examples” aufgefallen. Dort ist ein WebSocket-Chat-Beispiel bei, was funktioniert!
Wie kann das sein? Ich bin echt überfragt. Was kann ich denn jetzt noch tun?

Entschuldigt bitte dass ich den originalen Beitrag nicht editiere, aber irgendwie scheine ich den Bearbeiten-Knopf nicht zu sehen. :eek:

Es hat sich noch einiges getan. Und zwar musste ich feststellen, dass der Tomcat 7.0.56 auf meinem Raspberry PI (Debian) keine websocket-jars hat. Nach einer Recherche habe ich einen Bugreport gefunden. Scheinbar wurden die vergessen und werden erst mit Tomcat 7.0.64 oder so nachgereicht, was noch nicht in den Paketquellen ist.
Also habe ich mir einfach Tomcat 7 von Apache geladen, entpackt und gestartet. Im Tomcat-Manager habe ich dann die wsock.war deployed. Das Ergebnis:

Firefox kann keine Verbindung zu dem Server unter ws://raspberrypi:8080/wsock/chat aufbauen.

Beim Analysieren der Anfrage und der Antwort fiel auf, dass die Antwort kein upgrade enthält.
Anfrage:

Host: raspberrypi:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Sec-WebSocket-Version: 13
Origin: http://raspberrypi:8080
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: 0a80/+qiZ3mJ03bDgSV5kg==
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

Antwort

Content-Language: en
Content-Length: 971
Content-Type: text/html;charset=utf-8
Date: Fri, 01 Jan 2016 11:42:35 GMT
Server: Apache-Coyote/1.1

Dann sind mir die “examples” aufgefallen. Dort ist ein WebSocket-Chat-Beispiel bei, was funktioniert!
Wie kann das sein? Ich bin echt überfragt. Was kann ich denn jetzt noch tun?

Ich habe die Lösung gefunden: Mein Projekt wurde mit Java 8 Kompabilität kompiliert, aber Raspbian, wo es drauf laufen soll hat maximal Java 7. Ich habe also die Version geändert und nun läuft es!

Trotzdem vielen Dank!

[ot] @Ctwx Sorry für die Verzögerung: (Es kann sein, dass ganz neue User nicht editieren können, und) manchmal müssen aus Spamschutzgründen Beiträge von neuen Usern erst freigeschaltet werden - aber das solltest du nach wenigen Beiträgen schon hinter dir haben :D)
[/ot]