15 repositorios
Mechanisms for negotiating and upgrading standard HTTP connections to persistent protocols.
Distinguishing note: Focuses on the handshake process for protocol switching rather than general HTTP routing.
Explore 15 awesome GitHub repositories matching web development · Protocol Upgrades. Refine with filters or upvote what's useful.
This project provides a comprehensive implementation of the WebSocket protocol, enabling persistent, bidirectional communication between clients and servers. It handles the low-level complexities of the protocol, including the initial HTTP upgrade handshake and the encapsulation of data into discrete binary frames. By managing these connections, it allows applications to exchange data instantly without the overhead associated with repeated standard request cycles. The library distinguishes itself through its focus on high-frequency message exchange and concurrent connection management. It uti
Upgrades standard stateless HTTP connections to persistent bidirectional streams via header negotiation.
Fasthttp is a high-performance networking framework for Go, designed to maximize throughput and minimize memory overhead in demanding web applications. It functions as a specialized HTTP server and client library that prioritizes efficient resource management, allowing developers to build scalable services capable of handling massive concurrent traffic with minimal garbage collection pressure. The library distinguishes itself through a focus on zero-allocation processing and low-level optimization. It achieves this by recycling temporary request and response objects through managed pools and
Facilitates the transition of standard HTTP connections to persistent bidirectional communication channels.
websocketd is a CGI web server and process-to-WebSocket wrapper that transforms command line programs into WebSocket servers by bridging standard input and output streams to remote clients. It functions as a TLS-secured gateway that routes traffic to backend processes, allowing any executable using standard IO to be exposed via a web interface. The project uses directory-based endpoint mapping to automate the creation of URL paths from local executable files. It employs a process-per-connection model to isolate execution and forwards HTTP request metadata, such as cookies and query parameters
Handles the handshake protocol to upgrade standard HTTP requests into persistent bidirectional WebSocket streams.
Quarkus is a Kubernetes-native Java framework designed for building high-performance, memory-efficient applications. It utilizes ahead-of-time native compilation to transform Java code into standalone, optimized binaries that eliminate the need for a virtual machine, enabling rapid startup and reduced memory consumption. By performing code augmentation during the build phase, it shifts heavy processing tasks away from runtime, ensuring that applications are optimized for cloud-native environments. The framework distinguishes itself through a unified approach to reactive and imperative program
Inspects and rejects HTTP upgrade requests to control WebSocket connection establishment.
systemd is a comprehensive system and service manager for Linux that orchestrates the entire operating system lifecycle. It functions as the primary init system, managing the transition from firmware to a fully initialized user space while providing a unified framework for service orchestration, hardware management, and resource control. The project distinguishes itself through its declarative, unit-based configuration model and dynamic dependency resolution, which allow for efficient, on-demand service activation and socket-based process management. It integrates deep system observability th
systemd detects the presence of a logging service to automatically switch to a native, metadata-rich structured logging protocol.
Uvicorn is an ASGI web application host designed for asynchronous Python web development. It serves applications through a standardized asynchronous server gateway interface to handle non-blocking network traffic and high-concurrency requests. The server manages both HTTP and WebSocket traffic, including the handshaking process required to establish persistent, full-duplex communication channels for real-time data exchange. For development workflows, the project includes a hot-reload mechanism that monitors the filesystem for source code changes and automatically restarts the server process.
Manages the protocol upgrade process to transition HTTP requests into persistent WebSocket connections.
Undici is a high-performance HTTP client for Node.js designed to execute network requests while minimizing resource overhead and latency. The project provides specialized capabilities for HTTP request pipelining to increase throughput and memory-based response caching to reduce redundant network calls. It also supports HTTP tunneling and proxying through the establishment of secure two-way communication channels via the connect method. Additionally, the client includes tools for web API polyfilling to provide standard browser network interfaces within Node.js environments. Its functional sur
Supports the standard HTTP upgrade mechanism to transition active connections to different protocols.
NanoHTTPD is a lightweight, embeddable HTTP server for Java applications. It allows developers to integrate web server capabilities directly into a Java project to handle incoming requests without requiring a standalone installation. The project provides specialized implementations for an HTTPS web server, a WebSocket server for bidirectional real-time communication, and a static file web server. These capabilities enable secure network traffic through SSL certificates and the delivery of local files with automatic MIME type detection. The server includes systems for request routing and hand
Implements the handshake mechanism for upgrading standard HTTP connections to bidirectional WebSocket streams.
http-parser es una librería en C diseñada para el análisis (parsing) de mensajes HTTP sin copia (zero-copy), deconstrucción de URLs y gestión de actualizaciones de protocolo y codificación fragmentada (chunked encoding). Proporciona utilidades para extraer cabeceras, métodos y códigos de estado de las peticiones y respuestas HTTP. El proyecto incluye un parser de URLs zero-copy para descomponer cadenas en componentes individuales y un mecanismo para detectar peticiones de cambio de protocolo, identificando el desplazamiento exacto en bytes donde comienzan los datos no HTTP. También cuenta con un decodificador para manejar flujos de datos con transferencia codificada por fragmentos.
Detects requests to switch protocols and identifies the byte offset where the new protocol stream begins.
http-parser is a C-based library for extracting request and response metadata from raw HTTP data streams. It utilizes a state-machine approach to identify message segments and boundaries. The project implements zero-copy string parsing and pointer-based URL deconstruction to avoid memory allocations and data duplication. It supports incremental stream processing to handle fragmented data chunks and includes mechanisms for decoding chunked encoding and managing network protocol upgrades.
Provides mechanisms to track the exact byte offset for transitioning HTTP connections to new protocols.
wstunnel is a tool that tunnels arbitrary TCP traffic through WebSocket connections, enabling communication across restrictive firewalls and proxies. It operates as both a client and server, encapsulating TCP data within WebSocket binary frames and multiplexing multiple connections over a single WebSocket link. The tool supports mutual TLS authentication, requiring clients to present signed certificates for verification before establishing a tunnel, and provides shared secret access control and tunnel forwarding restrictions for additional security. The project distinguishes itself by offerin
Establishes tunnels by upgrading standard HTTP connections to WebSocket protocol using the HTTP Upgrade header.
This is a minimal WebSocket library for Go designed for bidirectional real-time communication. It serves as a network protocol implementation for managing handshakes, frame masking, and control signals to enable the exchange of text and binary messages over persistent connections. The library distinguishes itself by providing a connectivity layer that wraps browser WebSocket APIs for applications compiled to WebAssembly. It also functions as data compression middleware, utilizing deflate compression to reduce bandwidth usage for transmitted messages. The project covers a broad range of netwo
Provides mechanisms to upgrade standard HTTP connections to a persistent bidirectional WebSocket stream.
Rack es una interfaz mínima que estandariza cómo los servidores web y frameworks de Ruby se comunican. Proporciona una interfaz de aplicación web y una interfaz de servidor web, permitiendo que las aplicaciones Ruby se ejecuten en diferentes implementaciones de servidor mediante el uso de un hash de entorno común y una tupla de respuesta estandarizada. El proyecto implementa un pipeline de middleware HTTP modular, permitiendo que las solicitudes y respuestas sean interceptadas y modificadas a través de una secuencia de objetos invocables. Soporta la gestión de conexiones de bajo nivel, incluyendo el secuestro de conexiones TCP para manejo de protocolos personalizados, señalización de actualización de protocolo y streaming de datos bidireccional. La superficie de capacidades se extiende al manejo de solicitudes y respuestas, incluyendo lectura de flujo de solicitudes binarias y streaming de respuestas incremental. Proporciona herramientas para la gestión de sesiones, enrutamiento de rutas de aplicación y la entrega de archivos estáticos desde el sistema de archivos local. Para el aseguramiento de calidad, incluye utilidades para simular tráfico HTTP y entornos de servidor. El proyecto incluye una herramienta de línea de comandos para lanzar servidores web compatibles para alojar aplicaciones.
Enables signaling the web server to upgrade the protocol via environment headers.
Emissary es un API gateway de Kubernetes que gestiona el tráfico externo entrante y lo enruta a microservicios internos. Utiliza un proxy Envoy como plano de datos subyacente para manejar el enrutamiento de tráfico de alto rendimiento y la traducción de protocolos, con un plano de control que traduce los recursos personalizados y anotaciones de Kubernetes en configuraciones de proxy. El proyecto proporciona soporte especializado para infraestructura gRPC, incluyendo enrutamiento HTTP/2 y puente de protocolo gRPC-Web para clientes basados en navegador. Permite la seguridad de confianza cero (zero-trust) mediante cifrado TLS mutuo y delega la verificación de identidad a servicios de autenticación externos. Las capacidades de gestión de tráfico incluyen balanceo de carga round-robin ponderado para despliegues canary y entrega progresiva, así como balanceo de carga de Capa 7 y afinidad de sesión. El sistema también soporta redes multi-cluster mediante puentes de tráfico entre clusters e integra servicios de limitación de tasa (rate limiting) externos para limitar los volúmenes de peticiones. La observabilidad se maneja a través de una interfaz de diagnóstico, integración de rastreo distribuido y la exportación de métricas de rendimiento a herramientas externas como Prometheus y StatsD.
Negotiates and upgrades standard HTTP connections to other protocols by passing traffic to backend services.
Melody is a WebSocket server framework designed to upgrade HTTP connections into bidirectional streams. It functions as a session manager and binary streaming library that facilitates real-time data exchange between a server and multiple remote clients. The project features a broadcast engine that optimizes multi-client transmissions through wire-representation caching. It includes a dedicated session management system for attaching custom state to persistent network connections and an upgrade handler that validates handshake headers. The framework covers broad capability areas including eve
Provides mechanisms for negotiating and upgrading standard HTTP connections to persistent WebSocket protocols.