Macros de Prólogo y Epílogo en Hyperlane
El middleware es la columna vertebral del procesamiento de solicitudes en Hyperlane. La mayoría de las personas utilizan middleware estándar de solicitud y respuesta. Sin embargo, Hyperlane ofrece macros especializadas de prólogo y epílogo para un control adicional.
Estas macros se ejecutan al puro inicio y al puro final del ciclo de vida de la solicitud. Permiten controlar exactamente cuándo llegan los datos al cliente.
El ciclo de vida de la solicitud:
• Llega la solicitud: El servidor recibe la solicitud HTTP. • Fase de prólogo: Envías datos iniciales como encabezados o códigos de estado. • Cadena de middleware: Las funciones procesan la solicitud. • Manejador de rutas: El sistema construye la respuesta. • Middleware de respuesta: Las funciones procesan la respuesta. • Fase de epílogo: Los datos finales se envían al cliente y las conexiones se cierran.
Utiliza estas macros para gestionar los pasos 2 y 6.
Las macros de envío (Send Macros):
Utiliza #[try_send] para datos no críticos. Si una conexión se interrumpe, gestiona el error sin provocar una caída del sistema. Esto es ideal para streaming, donde perder un fragmento (chunk) no es un problema.
Utiliza #[send] para datos críticos. Esto garantiza que los datos se envíen correctamente.
Las macros de vaciado (Flush Macros):
Utiliza #[try_flush] para intentar limpiar el búfer y gestionar los errores de manera controlada.
Utiliza #[flush] para forzar el envío de todos los datos en el búfer al cliente. Utiliza esto para evitar la pérdida de datos antes de cerrar una conexión.
Mejores prácticas:
- Utiliza
#[try_send]para datos en streaming para evitar fallos en conexiones interrumpidas. - Utiliza
#[send]cuando la entrega de datos sea obligatoria. - Vacía siempre tu búfer antes de cerrar una conexión.
- Comprueba
stream.is_keep_alive()en tu epílogo para gestionar la reutilización de conexiones. - Utiliza estas macros para Server-Sent Events (SSE) para enviar actualizaciones en tiempo real.
- Gestiona todos los errores de envío (send) y vaciado (flush) para evitar fallos en el sistema.
Estas herramientas te brindan un control preciso sobre el flujo de datos y la sincronización de las respuestas.
Fuente: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Código del proyecto: https://github.com/hyperlane-dev/hyperlane