- A deep understanding of the protocols, operation, architecture and components that support the stack underneath large scale WebRTC.
- Skills in building and maintaining a Web Socket server and the client applications interacting with it.
- An awareness of the challenges presented in a real time web application built on Web Sockets and WebRTC with a knowledge of the industry standard approaches to solving these.
Working with professionals and industry experts, we have created a clear path of how to achieve these goals.
The knowledge and skills required to be competent can feel overwhelming. We help break it down and show a sensible route to mastery.
Once learners know what they need to know, how are we going to support them in gaining that knowledge?
- Modular video courses: This is a key strength of the egghead team. Each video course will be able to stand on its own while contributing to the path as a whole. Professionals will be able to use this growing library to answer questions and solve critical problems in their development.
- Problem/Solution sets: We'll set users up with problems, give them an opportunity to solve them in our inline editor and then present them with the solution.
- Interviews with experts: We'll curate a library of interviews exploring the issues that emerge in real time web development and the solutions that have emerged.
We want to help answer the question, “what should I learn next?”. Using the learning path, we can suggest a sensible next step. This can allow those smaller snippets of learning time to have the most impact.
This part explores the two main technologies of real time communication, WebRTC and Web Sockets, separately and then together. The focus throughout is on two users creating and maintaining a one-to-one connection.
Main beats:
- A local video chat application
- A Web Socket server that allows for web presence to be shared
- Joining these two separate elements together. The Web Socket server can serve as the signaling service for the WebRTC connection allowing for a remote video chat application
This part scales up the one-to-one video application to allow group chatting. It also provides something for the group to do, probably on a shared canvas. The aim is to have a locally rendered application that shares and receives state from the peers connected to it.
Main beats:
- Scaling up the video app
- Sharing a canvas
- Deciding on which method of communication is most suitable for each task
This part looks at a hosted application that has large processing needs. It allows clients to connect and interact with this application, projecting their intent and the application making the decision on the final result. The application might need to call out to expensive APIs (saving money as only one query rather than one per user) or might have to carry out expensive calculations (saving time and energy using a larger single instance to do the work and share the results).
Main beats:
- Accepting input from multiple sources and applying it to an application
- Sharing the results to the clients
- Exploring data integrity strategies (CRDT, last in, role based priorities)
On each step of the path, we’ll consider the issues that can challenge these applications in the wild. Using examples and interviews with experts, we’ll share industry standard approaches while considering their advantages and disadvantages. These would include:
- How do we handle errors?
- How do we test and debug at various stages of complexity?
- What happens when one user has a particular slow connection?
- How do we handle applications of these types as they scale?
While these three parts represent the main path, there will also be opportunities to explore related topics.
These are important topics but not core to every project.
Examples might include:
- Authentication and identity
- Audio and video codecs
- UI Development