2014-09-10 29 views
8

Jetty 9 supporta l'API Jetty Websocket both e l'API JSR 356 standard, per quelli che presumo siano motivi storici (API Jetty precedesfinal JSR 356).API Jetty WebSocket rispetto all'API JSR 356 standard

Ho esaminato la documentazione di base di entrambe le API, oltre ad alcuni esempi. Entrambe le API sembrano abbastanza complete e piuttosto simili. Tuttavia, ho bisogno di scegliere l'uno sull'altro per un nuovo progetto che sto scrivendo, e vorrei evitare di utilizzare un'API che potrebbe essere deprecata in futuro o che potrebbe rivelarsi meno ricca di funzionalità.

Quindi ci sono delle differenze importanti tra i due tranne per il fatto ovvio che uno è standardizzato?

risposta

13

implementazioni sia sul molo qui :)

Il molo WebSocket API venuto prima, e l'API JSR-356 è costruita su di esso.

L'API JSR-356 fa un paio di cose che l'API Jetty WebSocket non lo fa, come

  • Decoder per automatica Bin/Text to Object conversione
  • di Encoder per oggetto automatica a Bin conversione/Testo
  • Path Param movimentazione (aka automatica URI modello per il metodo param mappatura)

Tuttavia, l'API Jetty WebSocket può fare cose l'API JSR-356 non possono.

  • logica WebSocketCreator per la creazione arbitraria del endpoint WebSocket, con accesso alla HttpServletRequest
  • Migliore controllo di timeout
  • configurazioni
  • Finer tampone/Memory
  • È possibile gestire websocket estensioni
  • Supporta regi- Mappature di percorso basate su ex per endpoint
  • Accesso a eventi frame non elaborati
  • WebSocket client supp Orts meglio collegare la logica con timeout
  • cliente
  • WebSocket supporta SSL (JSR-356 standalone cliente non ha opzioni di configurazione per questo)
  • accesso sia InetAddress informazioni endpoint dall'oggetto Session WebSocket attiva
  • accesso al UpgradeRequest dallo stato attivo WebSocket sessione oggetto
  • Migliorato il supporto per gli endpoint apolidi
  • leggere gli eventi supporto sospende la logica/resume per consentire l'applicazione certa contropressione di base TCP/controllo di flusso
  • filtro basato o la configurazione base Servlet (JSR-356 ca. oach richiede l'aggiornamento a verificarsi prima tutti gli altri servlet e filtro di elaborazione)

Spero che questo aiuti, se volete maggiori dettagli, si prega di utilizzare il jetty-users mailing list, come questo tipo di domanda è in realtà inappropriato per StackOverflow.

+1

Grazie per un'ottima risposta.Ho notato alcune di queste differenze (come gli encoder/decodificatori e la gestione dei parametri del percorso), ma la tua risposta è * molto * utile. Inoltre, non sono sicuro che la mia domanda sia del tutto inappropriata qui, anche se sono d'accordo sul fatto che potrebbe sentirsi più "a casa" sulla tua mailing list. Dopo tutto, la domanda non è soggettiva e rientra nella categoria di "un problema pratico e risolvibile che è unico nello sviluppo del software" (http://stackoverflow.com/help/on-topic) – Malt

+0

È passato un po 'di tempo da quando questo post, ma se non ti dispiace chiedi: cosa c'è di male nell'invio di pong? – misaka