What problem does it solve? Returning long-lived responses like Server-Sent Events streams and WebSocket upgrades from a router is tricky: middleware can reconstruct responses and break 101 status codes or drop the Cloudflare webSocket property, streams can leak when clients disconnect, and caching can corrupt replayed stream bodies. This Skill documents how Rango handles these cases so your real-time routes work correctly. ## Core Features & Use Cases - Server-Sent Events via path.stream(): Return a ReadableStream with text/event-stream framing on any runtime, with guidance on abort-signal cleanup and disabling proxy buffering. - WebSocket upgrades via path.any(): Handle status-101 upgrade responses on Cloudflare Workers, including manual WebSocketPair usage, Durable Object routing, and integration with the agents library's routeAgentRequest. - Middleware and caching semantics: Understand how the router forwards upgrade responses without reconstruction, why cookies should not be set on upgrades, and why SSE must never be wrapped in cache(). - Use Case: You are building a live dashboard on Cloudflare Workers and need a /events/ticks SSE endpoint plus a /ws WebSocket echo endpoint routed through a Durable Object, with auth enforced by middleware before the upgrade. ## Quick Start Add an SSE endpoint that streams a tick event every second and a WebSocket upgrade route to my Rango app's urlpatterns.