2012-04-09 23 views
7

Ustawiłem MOD_SPDY na moim serwerze Apache, a teraz chcę zmodernizować mój kod klienta, aby użyć implementacji SPDY Netty do wysyłania moich żądań do serwera przez kanał SPDY.Używanie SPDY z Netty

To jest moje pierwsze doświadczenie z wykorzystaniem Netty, więc myślę, że dostaję to, że muszę jakoś skonfigurować mój kanał, a następnie wysłać żądania za jego pośrednictwem. Problem polega na tym, że nie wydaje się bardzo jasne, jak dokładnie skonfigurować kanały, a nawet po tym, jak śledzić wiele żądań HTTP w kanale, które mogą być wykonywane równocześnie.

Mam googled wokół i okazało się, że pakiet SPDY: http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/spdy/package-summary.html

ale dokumentacja jest wciąż dość cienkie tam. Nie znalazłem przykładów użycia kodu, tylko ogłoszenie, że istnieje w najnowszej wersji.

Czy ktoś ma przykład, jak zbudować kanał SPDY, a następnie przesłać/śledzić wiele żądań i odpowiedzi za jego pośrednictwem? Ponadto, jak by to działało, gdy serwer nie obsługuje SPDY, a kanał powraca do standardowego połączenia SSL?

+0

Jeśli nie jesteś przywiązany do Netty, może spróbuj Jetty SPDY, zobacz http://webtide.intalio.com/2012/03/spdy-support-in-jetty/ i http://www.smartjava.org/content/how-use-spdy-jetty. – sbordet

+1

@svordet Bill ma już serwer, potrzebuje klienta. – Slartibartfast

+0

W rzeczywistości wygląda na to, że sbordet jest poprawny; Jetty ma również klienta SPDY, który może być łatwiejszy w pracy z: http://wiki.eclipse.org/Jetty/Feature/SPDY#Using_SPDY_Client_Applications –

Odpowiedz

3

Jedyny przykład, jaki mogłem znaleźć na Netty i SPDY to kod testowy dla SessionHandler i socket echo test. Muszę jeszcze sprawić, aby to coś działało, ale Twój klient powinien utworzyć rurociąg składający się z SpdyFrameCodec, SpdySessionHandler i twojego handlera.

Twój handler powinien być modelowany po EchoHandler w teście sesji, ponieważ w ten sposób SpdySessionHandler wykonuje zadanie dekodowania nieprzetworzonych ramek na bardziej znaczące i wykonuje niektóre czynności zgodnie z protokołem SPDY.

Jeśli chodzi o zabezpieczenie przed upadkiem, istnieje SpdyHttpCodec w wersji migawki Netty, która tłumaczy z SPDY na HTTP. W ten sposób możesz zbudować swój program obsługi klienta w zakresie HTTP i odbierać wiadomości, które przychodzą przez SPDY lub HTTP w sposób przezroczysty. Aby to zrobić, należy zaimplementować coś podobnego do przykładu: port unification.

Wszystko to powiedziane. Jest miejsce dla kilku klas użytkowych/procedur obsługi, aby wszystko to stało się "nieszablonowym" doświadczeniem. Chciałem zrobić przykład, ale brakuje mi teraz czasu, a byłoby zbyt wiele kodu, aby po prostu wkleić go tutaj jako odpowiedź.

+0

Ah, więc po prostu żądam wielu kanałów z fabryki i pod maską sterowników SPDY zmultiplikuje je? W jakiej kolejności należy dodać moduły obsługi? –

+0

Niestety nie jest to takie proste, ale można to zrobić za pomocą dostarczonych klas. Jestem zainteresowany wykonaniem tej pracy samodzielnie, więc postaram się później zbudować działający kod. – Slartibartfast

2

Nie ma zbyt wielu przykładów używania spdy z pomostem. Zwykle nie jestem zwolennikiem bezwstydnej promocji, ale właśnie napisałem pełny przykład, jak robić to, co chcesz. Mam skonfigurowany netty do obsługi plików SPD, gdy klient go obsługuje i powraca do http, gdy spdy nie jest dostępny. Kod można znaleźć pod adresem: http://www.smartjava.org/content/using-spdy-and-http-transparently-using-netty

+0

Dziękuję za odpowiedź, ale szukam czegoś przeciwnego. Chcę klienta HTTP *, który użyje SPDY, gdy będzie dostępny, ale powróci do zwykłego protokołu HTTP. –

+0

Ach, tak.Wtedy nadal możesz używać prawie tego samego podejścia i zestawu procedur obsługi. Ale zamiast używać ServerBootstrap, użyj ClientBootstrap –

Powiązane problemy