All about the WebSphere Liberty Real-Time Communications (Rtcomm) feature, which provides support for the new HTML5 WebRTC capabilities.

This is the home of the WebSphere Liberty Real-Time Communications (Rtcomm) feature. This feature provides a set of real-time communications tools that rely on the new HTML5 WebRTC capabilities, making it possible to rapidly enhance the way customers engage with your company and its applications. Liberty provides a foundation for building web and mobile applications that can utilize real-time communications in the context of almost any vertical application.

Rtcomm: WebRTC Middleware for the Enterprise

For those struggling to find a WebRTC platform that integrates well with your existing web and mobile application infrastructure, you’ve come to the right place. If you’re frustrated with solutions that feel more like you’re installing a telephone network than adding a promising new enhancement to your existing Systems of Enagagement, we feel your pain.

The WebSphere Liberty approach to supporting WebRTC is different. We view WebRTC as a web standard, not a telco standard. Don’t get us wrong. WebSphere Liberty certainly includes the features needed to federate with these types of networks. We just took a hard look at developers who make a living from the creation of innovative web and mobile applications and decided to go a different route than many of our competitors. Our goal from day one has been to provide a solution for WebRTC that was both simple and familiar. The vast community of Java and JavaScript developers out there know little or nothing about telephony. WebRTC is an HTML5 standard. Shouldn’t solutions that support WebRTC feel the same or at least similar to your existing HTML5 solutions?

So with that said, the WebSphere Liberty Rtcomm feature makes the following assumptions:

  1. You’re web and mobile applications are data/context driven instead of a generic application trying to be all things to all people.
  2. You’re comfortable with web oriented security models like LTPA and oAuth.
  3. You’re more home with concepts like messaging, JavaEE and Node.js than Home Subscriber Servers, CSCFs and Diameter.
  4. You’re organization loves the extensibility of open source instead of vendor controlled black box solutions.

If these assumptions make sense to you we think you’re going to like this new feature.

Rtcomm: A BIG box of real-time communication tools

The Rtcomm feature is designed to accommodate both the JavaScript developer that knows nothing about call signaling as well as programmers that have a deep knowledge of the Session Initiation Protocol. To achieve this, Rtcomm supports a set of “baked-in” real-time communication capabilities that require no backend programming. For those that wish to drill deeper, WebSphere Liberty also exposes the SIP Servlet API (JSR 289). This programming model makes it possible to take complete control over the call signaling messages exchanged between Rtcomm clients.

Here is a list of all the capabilities provided by the WebSphere Liberty Rtcomm feature:

  • Peer-to-peer calling – Setup an Rtcomm demo using the built in endpoint registry in minutes.
  • Call Queues -Queues subscribed-on by agents and called-to by web users.
  • Third-Party Call Control – Initiate calls from 3rd party sources like IoT events.
  • Contextual Presence – Use context to locate endpoints to connect with.
  • Real-Time Messaging – Exchange text, audio and video in real-time.
  • Gateway – Rtcomm-to-SIP gateway for federation with SIP Trunking, IMS and the PSTN.
  • SIP Servlet Programming Model – For developers wishing to drill deeper into the signaling.
  • Media server integration – Support for media server control via JSR 309 for multiway, record/playback of media and much more.

To learn more about how to enable and configure the Liberty Rtcomm feature go here.

Rtcomm: Open source SDKs and open protocol

The core capabilities of the Rtcomm feature are delivered on the client-side through open source JavaScript libraries, making it extremely easy to integrate and customize the look and feel of your application. The following libraries can be used to deliver real-time features to new and existing JavaScript applications:

  • lib.rtcomm.clientjs – This raw JavaScript library provides the client-side services needed to connect to both Rtcomm peers and backend services.
  • lib.angular-rtcomm – This AngularJS module provides a number of UI components enabling rapid integration of Rtcomm into an AngularJS application.

The Liberty Rtcomm feature and the related open source components are built on the open Rtcomm signaling protocol described in the Rtcomm Signaling Protocol Specification. This simple JSON based protocol is well suited for WebRTC and integrates well with more advanced (and heavyweight) protocols such as SIP.

The Rtcomm Signaling Protocol is built on the open MQTT protocol. MQTT is a highly scalable, lightweight, pub-sub messaging protocol designed for use in low-powered devices which makes it ideal for mobile devices. It’s also very lean which makes it ideal for browsers. Rtcomm utilizes the Paho MQTT client which is also available in open source.

Rtcomm: angular-rtcomm landing page is now live!

For developers looking for a quick way to get started with WebRTC, look no further. The angular-rtcomm landing page provides the following three developer options to jump start your WebRTC demos:

  1. Try out all the live angular directives (widgets) directly on the landing page.
  2. Build your own angular applications using our Liberty Rtcomm developer sandbox hosted on Bluemix.
  3. Build your own sandbox with Liberty using our publicly hosted MQTT broker.

To get started now please vist: angular-rtcomm.wasdev.developer.ibm.com

Rtcomm: Simple yet extensible

While many features and functions can be derived from the Liberty Rtcomm feature with no backend programming, the feature also supports the ability to extend the base platform through the SIP Servlet (JSR 289) programming model and through services like third-party call control that are expose via MQTT topics.

For example, when the WebSphere Liberty Rtcomm feature is enabled, third-party call request can be directed at Liberty simply by publishing a simple JSON message on a well known MQTT topic. The details of the MQTT protocol used to initiate a third-part call can be found here: Rtcomm Service Protocol Specification. Again, since the goal is development at Internet Speed, we created the following open JavaScript libraries that make it extremely simple to create an external third-party calling application using Node.js and Node-RED:

  • lib.rtcomm.node – This node.js module provide a simple JavaScript library that is used to both monitor Liberty Rtcomm events and initiate third-party calls.
  • lib.rtcomm.node-red – This module provides to Rtcomm Node-RED nodes for event monitoring and third-party call control.

Rtcomm and the Internet of Things

Since the Liberty Rtcomm feature is built on MQTT, it can be integrated with literally millions of devices.

For those not familiar with Node-RED, its a super cool visual tool for wiring together the Internet of Things. Node-RED makes it extremely simple to use server-side JavaScript to wire together a huge palette of devices and services. Everything from Arduino devices to Twitter notifications. And now, with the new Rtcomm Node.js module and the Rtcomm Node-RED nodes, you have tools to enable the integration of real-time communications capabilities with the things in IoT. For instance, Rtcomm’s third party call control can be used to trigger a connection between a surveillance camera and an operator when video analytics triggers an emergency event.

Rtcomm: Communicate with context

Rtcomm provides several ways to share and communicate with context. First, since the Rtcomm Liberty feature is built on an industry leading Java EE platform which includes features ranging from WebSockets to EJBs, developers can use the underlying platform to store and retrieve all kinds of contextual information. In addition, Rtcomm allows developers to share context in real-time through Rtcomm presence and signaling.

The IBM Healthcare sample application is a good illustration of combing context (in this case patient records) with a real-time interaction between a doctor and a patient.

Rtcomm: Cloud communications made simple

Since the WebSphere Liberty server was designed for the cloud from the ground up and it’s already available in IBM BlueMix, delivering Rtcomm services in the cloud is a snap. Since BlueMix also supports Node.js and Node-RED, you can rapidly build innovative applications in the cloud using the Rtcomm Node-RED capabilities alongside Liberty in a matter of days or weeks instead of months or years.

14 comments on"WebRTC Application Development with Rtcomm"

  1. […] WebRTC development. Microsoft launched a new browser Edge to take advantage of the technology. IBM, Oracle and Cisco are developing products and platforms for the technology. It is not a question of […]

  2. cctv dealer March 21, 2016

    Given details everything very nice for blog readers. I really want to agree with you and extremely thank for this blog. Most websites designed for sharing knowledge and announcement to others. Security Devices have been secure your valuable property from unknown accesses. Example: Surveillance camera, Alarm Systems and Automation systems for home and Work Locations. Access via Name.. Thanks

  3. Jim Williams November 11, 2015

    Documentation issue (Readme.md) in WASdev/lib.rtcomm.clientjs.

    Under “Using the rtcommEndpoint object” is references:

    endpointObject.webrtc.setLocalMedia(…).

    That should be:

    rtcommEndpoint.webrtc.setLocalMedia(…)

    Shouldn’t it?

    Thanks,
    Jim

  4. Video shows only out-going video (host), the in-coming video is black-out (guest)

    • Hi Louis sorry to hear you’re running into problems. It would be helpful to get a bit more information from you. First, are you testing in a browser or a mobile device? Some client (JavaScript) logs could definitely help. If you want to contact us via email we can try to help you that way. Let me know how you want to proceed. Thanks.

    • One more thought. Most of the problems that occur where media does not flow are due to ICE negotiations. Without knowing more about your setup its hard to say where the problems are but if you are not configuring ICE in Liberty the likelihood of having media connectivity issues goes way up. ICE is critical here. For testing you can use some public Google ICE servers. Here is an example rtcomm servlet.xml example that we use on http://angular-rtcomm.wasdev.developer.ibm.com:

      stun:stun.l.google.com:19302
      stun:stun1.l.google.com:19302
      stun:stun2.l.google.com:19302

      If you use messagesight.demos.ibm.com please make sure you configure a unique rtcommTopicPath.

  5. […] you are interested in seeing the WebSphere Liberty Rtcomm feature in action, check out the angular-rtcomm demo page. This page was created to help […]

  6. Jim Williams October 20, 2015

    angular-rtcomm.wasdev.developer.ibm.com is broken

  7. […] Rtcomm feature supports JavaScript developers through a set of open source SDKs and samples available in GitHub. It also includes a set of back-end services for WebRTC endpoints including a registry, call […]

  8. […] WebRTC A new angular-rtcomm open source module is available. For more info about WebRTC and Liberty, see WASdev.net/webrtc. […]

  9. “open Rtcomm signaling protocol described in the Rtcomm Signaling Protocol Specification” has a broken link to github.

Join The Discussion

Your email address will not be published. Required fields are marked *