jueves, 28 de julio de 2016

Mini servidor HTTP & CGI con Perl6

Después de preparar la presentación de Una introdución a Perl 6 me llamó mucho la atención las funcionalidades que ofrece Perl6 sobre programación reactiva y gestión de eventos, así que después de mostrar cómo funciona un servidor HTTP con Perl5 me propuse hacerlo también con Perl6.

Con Perl6 es un poco distinto en cuanto a sintaxis y soporte multihilo pero la forma de gestionar HTTP es la misma. En cuanto al soporte multihilo existe la clase IO::Socket::Async.listen que proporciona la creación y puesta a la escucha de sockets asíncronos con soporte multihilo, de forma que por cada conexión crea un hilo alojado en un pool que Perl6 gestiona internamente.

La prueba de concepto la puedes encontrar aquí.

Este mini servidor web funciona en Windows y GNU/Linux con Rakudo Perl6 instalado y un par de módulos de Perl6 (URI y URI::Escape) que interpretan de forma adecuada las URIs que llegan al servidor.

La parte CGI se realiza mediante módulos de Perl6 y con el resto tenemos un servidor web funcional pero muy básico (solo contempla los códigos HTTP 200 y 404).

El frontal se compone de HTML, CSS y Javascript con JQuery para gestionar la conexión asíncrona con el script CGI de Perl6 que hace de servicio web.