So, how did we do this?

node-chromify is built on top of browserify, which allows node modules to be converted into a format that can be run in a browser.
Browsers can't normally created TCP listeners, but Chrome Apps can in Canary with the experimental extension APIs flag enabled.

Google's Paul Kinlan created a net-browserify module which wraps the Chrome API calls to the node.js "net" package. This gets us quite a bit further. We've patched a few things on this to help us out.

We've created an http-chromify module which is based on Node.js' "http" module. The Node.js version uses native C++ code to parse the HTTP messages between client and server. We replaced that with the pure JS http-parser-js module.

There were also couple of other pure JS modules that weren't browserified yet, namely freelist and string_decoder. We created repos for those so that browserify could pull them in.