The attached patch adds support for XHR connections and WebSocket connections in the browser. Currently there are only tests for XHR since phantomjs 1.x.x does not fully support the websockets protocol. Once phantom 2.x.x is released a test for websockets will be added. Currently only TJSONProtocol and TBufferedTransport are supported. More work needs to be done to get other protocols and transports to work.
To make browser tests work, all tests were converted to substack/tape (which is a TAP testing harness that works both on the server and in the browser). This has the side effect of making the tests way more readable.
Depends on the patches on these issues applied in this order:
THRIFT-2932 - Node.js Thrift connection libraries throw Exceptions into event emitter
THRIFT-2969 - nodejs: DRY up library tests
THRIFT-2964 - nodejs: move protocols and transports into separate files