I wrote Firehose in 2010 to support real-time web-based responses for Poll Everywhere. At the time, WebSockets was an early draft specification with buggy support in web browsers and load balancers, like HAProxy. Additionally, runtimes like GoLang, Elixir, and NodeJS weren’t mature enough to meet our requirements, so I developed on top of Ruby EventMachine with the ability to connect to a web-browser client via HTTP long-polling, then upgrade to WebSockets if the client’s browser or network configuration would allow it.

This technology allowed Poll Everywhere to become the first polling service to have live web-based response capabilities during a presentation.