Loop/Architecture: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 48: Line 48:
=== User Blocks "Call-Me" URL ===
=== User Blocks "Call-Me" URL ===
[[File:loop-block-url.png|center|"Call-Me" URL Blocked]]
[[File:loop-block-url.png|center|"Call-Me" URL Blocked]]
=== User Abandons Ringing Call ===
[[File:loop-abandon-call.png|center|Calling User Abandons Ringing Call]]


=== User Calls Other User ===
=== User Calls Other User ===

Revision as of 19:16, 19 March 2014

Design Goals

Underlying Technologies

Mozilla Technologies

The Loop project relies on a number of other technologies under development within Mozilla. These include the following:

Third-Party Technologies

  • Node.js for Loop server, at least through production

Open Issues

These technology choices will be moved into one of the preceding sections as decisions are made:

Network Architecture

Network Diagram

Data Flows

Note that these are currently described in terms of a REST (or, at least, REST-like) interface on the Loop server. There is a significant possibility that this interface will evolve to be JSON objects exchanged on a WebSockets connection, similar to the network API exposed by the Simple Push Server.

User Connects

Endpoint Registration

User Generates "Call-Me" URL

"Call-Me" URL Generation

Non-User Clicks "Call-Me" URL

"Call-Me" URL Activation

User Rejects Call

Call Rejected

Note that the exact means by which Bob receives pending call status is still an open issue -- periodic polling is easy, but might not scale as well as we'd like. Long polling is a potential improvement, but also has scaling implications. Ultimately, websockets may be the preferred approach here.

User Blocks "Call-Me" URL

"Call-Me" URL Blocked

User Abandons Ringing Call

Calling User Abandons Ringing Call

User Calls Other User

Loop user calls other Loop user

Client Architecture

Address Book

Server Architecture

Database Schema