Before we begin test-driving, let's think about the up-front design.
There are two modes of operation: presenting and watching. If you're presenting, then everyone watching will get a copy of your commands. A session is made up of one presenter and zero or more watchers. WebSockets are used to communicate with the server. Messages are sent in JSON format.

The new teaching mode, with sharing information at the top of the screen
So, how does it work?
- The presenter clicks the Start sharing button. The server is sent the following message.
{ type: 'START_SHARING' }
- The server then responds with the id of the session, as shown:
{ status: 'STARTED', id: 123 }
- This ID can be used to create a URL that opens the application in watching mode, linked to this ID:
http://localhost:3000/index.html?watching=123
- The URL can...