2012-04-09 13 views
7

He configurado MOD_SPDY en mi servidor Apache y ahora quiero actualizar mi código de cliente para usar la implementación SPDY de Netty para enviar mis solicitudes al servidor a través de un canal SPDY.Usando SPDY con Netty

Esta es mi primera experiencia usando Netty, así que creo que tengo que configurar de alguna manera mi canal y luego enviar solicitudes a través de él. El problema es que no parece muy claro exactamente cómo configurar los canales e incluso después de eso, cómo rastrear múltiples solicitudes HTTP dentro del canal que podrían estar ejecutándose simultáneamente.

He buscado en Google y encontré el paquete SPDY: http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/spdy/package-summary.html

pero la documentación es todavía muy fina allí. No parecía encontrar ningún ejemplo de uso del código, solo el anuncio de que existe en la última versión.

¿Alguien tiene un ejemplo sobre cómo construir un canal SPDY y luego enviar/rastrear múltiples solicitudes y respuestas a través de él? Además, ¿cómo funcionaría esto cuando el servidor no admita SPDY y el canal vuelva a una conexión SSL estándar?

+0

Si no está vinculado a Netty, quizás pueda probar el SPDY de Jetty, consulte http://webtide.intalio.com/2012/03/spdy-support-in-jetty/ y http://www.smartjava.org/content/how-use-spdy-jetty. – sbordet

+1

@svordet Bill ya tiene un servidor, necesita un cliente. – Slartibartfast

+0

En realidad, parece que sbordet es correcto; Jetty también tiene un cliente SPDY con el que podría ser más fácil trabajar: http://wiki.eclipse.org/Jetty/Feature/SPDY#Using_SPDY_Client_Applications –

Respuesta

3

único ejemplo que pude encontrar en Netty y SPDY es un código de prueba para SessionHandler y socket echo test. Todavía tengo que hacer que esto se ejecute, pero su cliente debe hacer un pipeline compuesto por SpdyFrameCodec, SpdySessionHandler y su controlador.

Su controlador debe modelarse después de EchoHandler en la prueba de sesión, porque de esa manera SpdySessionHandler hace la tarea de decodificar tramas crudas en más significativas y hace algunas cosas según lo requerido por el protocolo SPDY.

En cuanto a repliegue, hay SpdyHttpCodec en la versión instantánea de la Netty que se traduce de SPDY a HTTP. De esta forma, puede compilar su controlador de cliente en términos de HTTP y recibir mensajes que vengan a través de SPDY o HTTP de forma transparente. Para hacer esto, se requiere implementar algo similar al ejemplo port unification.

Todo lo dicho. Hay espacio para pocas clases/manejadores de utilidades para hacer de todo esto una experiencia "lista para usar". Quería hacer un ejemplo de trabajo, pero me falta tiempo ahora para eso, y habría demasiado código para simplemente pegarlo aquí como respuesta.

+0

Ah, entonces solo solicito varios canales de la fábrica y bajo el capó los controladores SPDY ¿los multiplexará? ¿En qué orden debo agregar los controladores? –

+0

Lamentablemente, no es tan simple, pero es posible hacerlo utilizando las clases proporcionadas. Estoy interesado en hacer esto yo mismo, así que intentaré construir código de trabajo más tarde. – Slartibartfast

2

No hay muchos ejemplos para usar spdy con embarcadero. Por lo general, no soy de promoción desvergonzada, pero acabo de escribir un ejemplo completo sobre cómo hacer lo que quieres. Configuré netty para servir spdy cuando el cliente lo admite y regreso a http cuando spdy no está disponible. Puede encontrar el código en: http://www.smartjava.org/content/using-spdy-and-http-transparently-using-netty

+0

Gracias por la respuesta, pero estoy buscando lo contrario. Quiero un HTTP * Client * que use SPDY cuando esté disponible, pero vuelva al HTTP normal. –

+0

Ah, así.Entonces todavía puedes usar prácticamente el mismo enfoque y conjunto de controladores. Pero en lugar de usar un ServerBootstrap, use un ClientBootstrap –