← Graph

PURR

project 7 connections

Experimental protocol by David Halasz standing for 'Protocol Upgrade Raw Request'. Mirrors the WebSocket handshake — an HTTP GET with Upgrade — but instead of upgrading to WebSocket downgrades to raw TCP, tunneling arbitrary TCP-based protocols (VNC, SSH, etc.) through an HTTP endpoint. Benefit: HTTP routing, headers, cookies, TLS, and any Rack middleware still apply, so it can be mounted as a normal Rails/Rack route. Drawback: because browsers cannot open TCP sockets, today it needs a browser plug-in plus a native client binary; may become pure-browser once the W3C draft for permissioned TCP connections ships. Demoed with a Puma server routing VNC and SSH connections from a native client into containers running inside VirtualBox. Ruby server API looks like Rack: pass a block receiving host/port for the upstream endpoint.

status
active
license
open-source
about
PURR project
Second half of the talk introduces the PURR protocol
about
PURR project
Applies specifically to the TCP-tunneling PURR case where bytes don't need to reach userspace
about
PURR project
Concerns the PURR native-console flow
project PURR
related_to
VNC concept
Primary use case is tunneling VNC from hypervisor to a native desktop client
project PURR
uses
Rack tool
PURR server exposes a Rack-like block API and can mount in Rails routes
project PURR
uses
Puma tool
Demo PURR server is run under Puma
person David Halasz
works_on
PURR project
Author of the PURR experimental protocol and server library
role: author

Provenance

Read by
1 extraction