- What is the real purpose of the JS library?
- Do I need one for WebRTC?
- What should I consider when evaluating this component of a WebRTC solution?
- What makes a good JS library, what makes bad one?
These are the nagging questions that I wrestled in my own early research into WebRTC. At this point, I have certainly not personally used every WebRTC JS library out there, but have certainly tried quite a few. In this post I’ll attempt to address these questions, and my own thoughts on what is in a WebRTC JS library.
A bit of history…
an early impression stuck out to me: the realization that WebRTC’s power was going to be wielded by developers
You could say that the web had an already established, full scale signaling plane, that was just waiting to be used for WebRTC
A quick primer
Listing shows WebRTC JS libraries with public documentation. Check out our Tool Vendor Directory for a more complete list of WebRTC tools.
So many choices!
Initialization of the library
|After the library is initialized (and sometime in conjunction with initialization), it is common for some sort of registration function to take place. This can serve to nail up a connection to a signaling server somewhere, and let a service know that the user is ready to receive inbound signaling messages. It is common that registration also involve some security procedures to provide authentication of the user and/or the app as it connects back to the network (see security notes below).
Create and Manage WebRTC Sessions
Ease of use
Extensibility and exposure
While ease of use is nice, it is also important that the library not sacrifice information and functionality for the sake making it more simple. As mentioned previously, the “call in X lines of code” is nice to get started, but inevitably you will find yourself needing much more code for greater functionality.
Under the hood
So, that means the important part is the actual functionality and capabilities delivered by a service, via the WebRTC JS library. Beyond the basic common methods, naturally much of this depends on the infrastructure and use case. Ranging from general telephony, conferencing, collaboration, IMS/RCS, customer relationship management, or social networking, the requirements of the web application can be quite different. Sadly we can’t possibly get into a complete analysis of all use case requirements, cross referenced with the features and functionality of the services that are represented by all the different WebRTC JS libraries. However, some questions to ask:
- Do I need access to a communications network (e.g. IMS, PSTN)?
- Is there an existing web, or communication architecture I need to integrate with?
- Can I plug into an external directory, or use my own?
- What are my security requirements (see note on security)?
- Do I have specific user experience requirements, like multi-party conferencing, co-browsing, file sharing, or screen share?
- Any requirements for Data Channels?
A Quick Note on Security
So, What’s in a WebRTC JS Library?