Ich verwende Embedded Jetty und Spring für Java zu Java-Kommunikation über HTTP. Mein Problem ist, dass meine Server-Anwendung normale TCP-Nachrichten auch am selben Port verarbeiten muss.Empfangen Sie keine HTTP-Nachrichten mit Jetty
Gibt es eine Möglichkeit festzustellen, ob eine TCP-Nachricht angekommen ist, die vom Servlet nicht behandelt werden kann?
Danke für die Antworten füge ich noch einige weitere Details:
- ich den Client nicht ändern können. Der Grund dafür ist, dass die alte Version des Clients pure java tcp socket verwendet und es sich herausgestellt hat, dass der neue Server abwärtskompatibel mit dem alten Client sein muss.
- Verwenden Sie den gleichen Port
- Alte Client-Nachrichten sind kurze serialisierte Text über einfache Socket. 1: offene Verbindung, 2: Senden Sie Text, 3: enge Verbindung
- Mein Server sieht wie folgt aus: http://kielczewski.eu/2013/11/using-embedded-jetty-spring-mvc/
- Ich brauche nicht die Nachricht zu analysieren. Es genügt zu erkennen, dass eine Nachricht angekommen ist, die nicht http verwendet und den Quell-Host-Namen abruft.
Jede Lösung, die Sie sich vorstellen, erfordert eine hochgradig angepasste 'ServerConnector'-Implementierung, um die eingehenden Informationen vorab zu parsen, sei es HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2 oder Raw TCP und rufen Sie dann die entsprechenden Ebenen in Jetty (für http) oder Ihre App (wenn nicht http). Aus Neugier, warum nicht einfach WebSocket verwenden? –