2014-09-10 12 views
8

Jetty 9 unterstützt both seine eigene Jetty Websocket API sowie die Standard JSR 356 API, für die ich vermute, sind historische Gründe (Jetty API precedes die final JSR 356).Jetty WebSocket API gegen den Standard JSR 356 API

Ich habe die grundlegende Dokumentation beider APIs sowie einige Beispiele angeschaut. Beide APIs scheinen ziemlich vollständig und ziemlich ähnlich zu sein. Für ein neues Projekt, das ich schreibe, muss ich jedoch eines über dem anderen auswählen, und ich möchte vermeiden, dass eine API verwendet wird, die in der Zukunft veraltet ist oder sich als weniger funktionsreich erweist.

Gibt es also wichtige Unterschiede zwischen den beiden außer der offensichtlichen Tatsache, dass man standardisiert ist?

Antwort

13

Implementor sowohl auf Jetty hier :)

The Jetty WebSocket-API war zuerst da, und die JSR-356 API wird oben drauf gebaut.

Der JSR-356 API hat ein paar Dinge, die der Jetty WebSocket-API nicht, wie

  • Decoder sind für die automatische Bin/Text Konvertierung Objekt
  • Encoder ist für die automatische Objekt zu Bin/Text Konvertierung
  • Pfad param Handhabung (auch bekannt als automatisches URI-Vorlage Methode param-Mapping)

die Jetty WebSocket-API kann jedoch Dinge, die der JSR-356 API nicht möglich.

  • WebSocketCreator Logik für beliebige Schaffung des WebSocket-Endpunkt, mit Zugang zum HttpServletRequest
  • Bessere Kontrolle von Timeouts
  • Finer Puffer/Speicherkonfigurationen
  • können Sie WebSocket-Erweiterungen verwalten
  • Unterstützt Reg- Ex-basierte Pfadzuordnungen für Endpunkte
  • Zugriff auf RAW-Rahmenereignisse
  • WebSocket-Client supp ort verbindet bessere Logik mit Timeouts
  • WebSocket-Client unterstützt SSL (JSR-356 Standalone-Client keine Konfigurationsoptionen für dies hat)
  • Zugriff auf die beiden InetAddress Endpunktinformationen aus dem aktiven WebSocket Session-Objekt
  • Zugang zu UpgradeRequest von aktiven WebSocket Sitzungsobjekt
  • Bessere Unterstützung für zustandslose Endpunkte
  • Read Ereignissen auszusetzen unterstützen/Resume-Logik-Anwendung einige grundlegende TCP-Gegendruck ermöglichen/Flusssteuer
  • Filter basiert oder Servlet-basierte Konfiguration (JSR-356 ca oach erfordert vor allen anderen Servlet und Filterverarbeitung auftreten Upgrade)

hoffe, das hilft, wenn Sie weitere Informationen wünschen, verwenden Sie bitte das jetty-users mailing list, da diese Art von Frage für Stackoverflow wirklich unangemessen ist.

+1

Danke für eine ausgezeichnete Antwort.Ich habe einige dieser Unterschiede bemerkt (wie die Encoder/Decoder und die Handhabung von Pfadparametern), aber Ihre Antwort ist * sehr * hilfreich. Ich bin mir auch nicht sicher, ob meine Frage hier völlig unpassend ist, obwohl ich der Meinung bin, dass es sich vielleicht auf Ihrer Mailingliste "zu Hause" anfühlt. Schließlich ist die Frage nicht subjektiv und fällt gut in die Kategorie "ein praktisches, beantwortbares Problem, das einzigartig für die Softwareentwicklung ist" (http://stackoverflow.com/help/on-topic) – Malt

+0

Es ist schon eine Weile her diesen Post, aber wenn es dir nichts ausmacht, zu fragen - was ist falsch daran, pongs schicken zu können? – misaka