Miscellaneous
At the time of writing this book, the WebRTC specifications were still not finalized. The overall idea of what WebRTC does and how WebRTC works has been finalized. It's just that the APIs are still under development.
For example, WebRTC has introduced an alternative to the navigator.getUserMedia()
method, that is, the navigator.mediaDevices.getUserMedia()
method. At the time of writing this book, navigator.mediaDevices.getUserMedia()
is not supported in any browsers. The difference between them is that the navigator.mediaDevices.getUserMedia()
method is based on the promise pattern, whereas navigator.getUserMedia()
is based on the callback pattern. At present, there is no plan to get rid of navigator.getUserMedia()
due to the backward compatibility reason, but in future, navigator.getUserMedia()
may be removed as WebRTC wants to implement all APIs using the promise pattern, therefore, it's difficult to maintain multiple APIs that do the same thing. Similarly, navigator.mediaDevices.enumerateDevice()
is an alternative to MediaStreamTrack.getSources()
, that is, navigator.mediaDevices.enumerateDevice()
is based on the promise pattern.
Note
You can find the official specification of WebRTC at http://www.w3.org/TR/#tr_Web_Real_Time_Communication.
Due to the fact that there are multiple APIs for the same feature, each with a different browser support, WebRTC provides a script called adapter.js
, which is a shim to insulate websites from specification changes and prefix differences. You can find the shim at https://github.com/webrtc/adapter.
WebRTC has a GitHub repository where it puts a lot of example projects showing some of the things that can be built using WebRTC. You can find the repository at https://github.com/webrtc/samples. Just by looking at the examples and their source code, you can learn a lot more about WebRTC.