Cómo hacer un servidor asíncrono en ESP8266


Continuamos con las entradas del ESP8266 viendo cómo configurar un servidor asíncrono con la ayuda de la librería AsyncServer.

Llevamos varias entradas viendo cómo montar un servidor con el ESP8266. Progresivamente hemos llegado en la última entrada a una solución funcional, sirviendo ficheros estáticos comprimidos en Gzip desde la memoria SPIFFS.

¿Es posible mejorar esta solución? Sí, gracias a la genial librería ESPAsyncWebServer disponible en https://github.com/me-no-dev/ESPAsyncWebServer. Gracias a esta librería Open Source podemos crear un servidor asíncrono, es decir, que es capaz de atender a varios clientes de forma simultánea.

Además, la librería ESPAsyncWebServer dispone de ventajas adicionales como su velocidad, la sencillez de uso. Por supuesto, incorpora de serie la gestión de ficheros comprimidos en Gzip. Es decir, una maravilla de librería que dispone de muchas mejoras podéis consultar en la documentación de la página del proyecto.

Anuncio:

Por tanto, vamos a modificar nuestro código de ejemplo de servidor para funcionar con ESPAsyncWebServer. En primer lugar, el Skecth principal queda de la siguiente forma.

Donde veremos que el cambio más notorio es que no tenemos nada en la función 'loop'. No es necesario ya que, cómo hemos dicho, el servidor ESPAsyncWebServer es asíncrono (¡oh yeah!).

Por su parte, el fichero Server.hpp también se ha modificado, para adecuarse a la nueva librería.

No obstante, como vemos su uso es muy similar. Establecemos un ruteo para contenido estático en el SPIFFS, un endpoint ante llamadas GET a la URL /hello y, finalmente, un callback para 'Not found'.

¡Así de fácil! Subimos los mismos ficheros de la página web "Hola mundo" que tenemos en la carpeta 'data' de las entradas anteriores (comprimidos en Gzip, o no, a vuestro gusto) y accedemos para comprobar, una vez más, que todo sigue funcionando correctamente.

La librería ESPAsyncWebServer es una gran opción para incluir en nuestros proyectos. De hecho, lo usaremos con frecuencia a partir de ahora en nuestros ejemplos como la solución preferida para servir contenido.

En la próxima entrada haremos un breve parón en el uso de ESP8266 como servidor, para ver la actualización de contenidos por el aire (OTA). Después empezaremoscon los ejemplos donde intercambiaremos información entre el ESP8266 y el cliente a través de distintos mecanismos (formularios, Ajax y websocket). ¡Hasta pronto!

Descarga el código

Todo el código de esta entrada está disponible para su descarga en GitHub.

Si te ha gustado esta entrada y quieres leer más sobre ESP8266 puedes consultar la sección
tutoriales de ESP8266

Anuncio:

Previous Cómo servir contenido comprimido en Gzip con ESP8266
Next Cómo programar el ESP8266 por WiFi con Arduino OTA
1000
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
newest oldest
martinis73

Genial! Estoy buscando opciones para visualizar/graphicar datos de 3 sensores online, y me parece genial tu propuesta con ESPAsyncWebServe. Que hay de la velocidad de datos que puede aceptar, no es escencial en este caso mio la velocidades de .2 segundo pero me gustaria saber pues este proyecto que hago es para encaminar aplicarlo en tales velocidades/outputs. Saludos.