2012-04-09 17 views
7

Ho impostato MOD_SPDY sul mio server Apache e ora voglio riadattare il mio codice client per utilizzare l'implementazione SPDY di Netty per inviare le mie richieste al server su un canale SPDY.Utilizzo di SPDY con Netty

Questa è la mia prima esperienza con Netty, quindi penso di avere che ho bisogno di configurare il mio canale in qualche modo e quindi inviare richieste attraverso di esso. Il problema è che non sembra molto chiaro esattamente come configurare i canali e anche dopo, come tenere traccia di più richieste HTTP all'interno del canale che potrebbe essere in esecuzione contemporaneamente.

Googled intorno e ho trovato il pacchetto SPDY: http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/spdy/package-summary.html

ma la documentazione è ancora abbastanza sottile lì. Non ho trovato alcun esempio di utilizzo del codice, solo l'annuncio che esiste nell'ultima versione.

Qualcuno ha un esempio su come costruire un canale SPDY e quindi inviare/tracciare più richieste e risposte attraverso di esso? Inoltre, come sarebbe questa funzione quando il server non supporta SPDY e il canale ricade su una connessione SSL standard?

+0

Se non sei legato a Netty, forse puoi provare SPDY di Jetty, vedi http://webtide.intalio.com/2012/03/spdy-support-in-jetty/ e http://www.smartjava.org/content/how-use-spdy-jetty. – sbordet

+1

@svordet Bill ha già un server, ha bisogno di un client. – Slartibartfast

+0

In realtà, sembra che sbordet sia corretto; Jetty ha anche un client SPDY che potrebbe essere più semplice da utilizzare: http://wiki.eclipse.org/Jetty/Feature/SPDY#Using_SPDY_Client_Applications –

risposta

3

solo esempio ho potuto trovare su Netty e SPDY è un codice di prova per SessionHandler e socket echo test. Devo ancora fare funzionare questa cosa, ma il tuo cliente dovrebbe creare una pipeline composta da SpdyFrameCodec, SpdySessionHandler e dal gestore.

vostro gestore deve essere modellati EchoHandler a prova di sessione, perché in questo modo SpdySessionHandler fa lavoro di decodifica dei fotogrammi grezzi in quelli più significativi e fa alcune cose come richiesto dal protocollo SPDY.

Per quanto riguarda il fall-back, ci sono SpdyHttpCodec nella versione snapshot del Netty che si traduce da SPDY in HTTP. In questo modo puoi creare il tuo gestore client in termini di HTTP e ricevere messaggi che arrivano tramite SPDY o HTTP in modo trasparente. Per fare ciò è necessario implementare qualcosa di simile all'esempio port unification.

Tutto ciò che ha detto. C'è spazio per poche classi di utilità/gestori per rendere tutto questo un'esperienza "pronta all'uso". Volevo fare un esempio funzionante, ma in questo momento mi manca del tempo, e ci sarebbe troppo codice per incollarlo qui come risposta.

+0

Ah, quindi mi basta richiedere più canali dalla fabbrica e sotto il cofano i gestori SPDY li multiplex? In quale ordine devo aggiungere i gestori? –

+0

Sfortunatamente non è così semplice, ma è possibile farlo utilizzando le classi fornite. Sono interessato a fare questo lavoro da solo, quindi proverò a creare il codice di lavoro più tardi. – Slartibartfast

2

Non ci sono molti esempi per l'utilizzo di spdy con jetty. Di solito non sono uno per la promozione spudorata, ma ho appena scritto un esempio completo su come fare ciò che vuoi. Ho configurato netty per servire spdy quando il client lo supporta e ricorrere a http quando spdy non è disponibile. Puoi trovare il codice a: http://www.smartjava.org/content/using-spdy-and-http-transparently-using-netty

+0

Grazie per la risposta, ma sto cercando il contrario. Voglio un client * HTTP * che utilizzi SPDY quando disponibile, ma che torni al normale HTTP. –

+0

Ah, così.Quindi puoi ancora usare lo stesso approccio e set di gestori. Ma invece di usare un ServerBootstrap, usa un ClientBootstrap –