Loop/Architecture

From MozillaWiki
Jump to navigation Jump to search

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