snowflake/broker/README.md
2016-02-11 21:39:24 -08:00

39 lines
1.4 KiB
Markdown

This is the Broker component of Snowflake.
### Overview
The Broker handles the rendezvous by matching Snowflake
Clients with Proxies, and passing their WebRTC Session Descriptions
(the "signaling" step). This allows Clients and Proxies to establish
a Peer connection.
It is analogous to Flashproxy's
[Facilitator](https://trac.torproject.org/projects/tor/wiki/FlashProxyFAQ),
but bidirectional and domain-fronted.
The Broker expects:
- Clients to send their SDP offer in a POST request, which will then block
until the Broker responds with the answer of the matched Proxy.
- Proxies to announce themselves with a POST request, to which the Broker
responds with some Client's SDP offer. The Proxy should then send a second
POST request soon after containing its SDP answer, which the Broker passes
back to the same Client.
### Running your own
You can run your own Broker on either localhost or appengine.
(Other CDNs will be supported soon.)
To run on localhost, run `dev_appserver.py` or equivalent from this
directory. (on arch, I use the wrapper script `dev_appserver-go`)
To run on appengine, you can spin up your own instance with an arbitrary
name, and use `appcfg.py`.
In both cases, you'll need to provide the URL of the custom broker
to the client plugin using the `--url $URL` flag.
See more detailed appengine instructions
[here](https://cloud.google.com/appengine/docs/go/).