snowflake/broker
2016-09-20 08:52:45 -07:00
..
app.yaml rename rendezvous to broker 2016-01-19 18:09:06 -08:00
broker.go fix broker offer answer test 2016-09-20 08:52:45 -07:00
metrics.go initial client roundtrip estimate on broker 2016-09-20 06:28:11 -07:00
README.md Begin the Broker sub-README page 2016-02-11 21:39:24 -08:00
snowflake-broker_test.go another goconvey test for RequestOffer, fix data race in the Broker test 2016-02-17 12:52:51 -08:00
snowflake-heap.go Simplify proxy poll handler, and broker match test 2016-02-16 21:11:32 -08:00

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, 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.