HTML5 WebRTC, for Web Real Time Communications is free, open secifications to enable rich, high quality, Real Time Communications applications to be developed in the browser via simple Javascript APIs and HTML5. Major browsers already support or will support it soon natively. This talk will present an overview of WebRTC, how it is already revolutionizing the Web and changing the Telco industry. A couple of emblematic use cases will be also explored to show the potential of WebRTC in different enterprise markets and a live demo of a 1 to 1 WebRTC Video Conference will also be performed followed by a detailed explanation on how it was achieved as well as what JBoss AS7 additions were required to make it work
5. Mission Statement
●
WebRTC is a free, open project that enables web browsers
with Real-Time Communications (RTC) capabilities via
simple Javascript APIs.
●
Think rich, high quality, RTC applications in the browser via
simple Javascript APIs and HTML5 without plugin
●
The WebRTC initiative is a project supported by
6. Developer Stance
Defines a set of Media and Data JavaScript APIs
to bring VoIP natively to the browser and cross
platforms :
●
GetUserMedia
(camera and microphone access)
●
PeerConnection
(sending and receiving media)
●
DataChannels
(sending non-media direct between browsers)
8. HTML5 WebRTC
Signaling and Media
• WebRTC is
independent of Call Control Call Control
WebSockets
• Can use anything
for call control
signaling including
Ajax, server push
or plain HTTP
• Media is peer to
peer and can
handle both audio
and video
(RTCWeb)
10. Browser Support Today ?
●
Supported out of the box in Google Chrome 23,
support coming to Chrome Mobile in 2013
?
●
●
nightly builds support WebRTC, should be stable in
●
the next couple months
●
not supporting WebRTC but Microsoft made its own
●
WebRTC proposal “CU-RTC-Web” (Customizable, Ubiquitous
Real Time Communication over the Web) but available through
Google Frame
not supporting WebRTC yet but Opera Mobile support access to
Video and Camera
●
launched a new Mobile Browser called Bowser with
support for WebRTC, trying to push H.264 vs VP8 video codec
●
Support has more concerns : Browsers, SDK, Native APIs
16. Goal
●
Since WebRTC = VoIP, makes sense to support in the
largest Open Source Communication Platform, no ?
●
Handle large number of concurrent connections
●
Allow Interop with existing VoIP or Telco Infrastructure
●
Since WebRTC doesn't define the call control signaling, choice
was to use SIP as signaling protocol (there is a draft for that)
17. What is SIP ?
●
Stands for Session Initiation Protocol, protocol of choice for
VoIP and all IP based networks (LTE, 4G networks)
●
VoIP Call consists of 2 parts :
●
Call Control (SIP)
●
Negotiates RTP parameters (through SDP)
●
Authentication
●
Media (RTP) – carries audio stream in small packets
20. SIP Over WebSockets
Typical Flow
http://tools.ietf.org/html/draft-ietf-sipcore-sip-websocket-06 : Still a draft
• Regular HTTP request with Upgrade header
• Switch to normal mode
o No HTTP any more, just plain subprotocol
o ..except it's masked so plaintext can't be
misinterpreted and avoid security issues
• SIP Messages carried in WebSocket Data
• New SIP Transports : WS or WSS (for Secure
using TLS)
200 OK
SIP INVITE
22. JBoss AS7 Adds-Ons
• Automatically adds WebSocket support to any JAIN SIP based server (SIP Stack used by
Mobicents and Google Android 2.3+)
o SIP Servlets http://dev.telestax.com/sipservlets/
o SIP Stack http://dev.telestax.com/jain-sip/
23. Implemented on top
of NIO
• WebSockets phones need a TCP/TLS connection to be
alive even when not in a call. This connection cannot die
otherwise the phone can't receive calls.
• NIO is great for TCP/TLS
o TCP/TLS SIP sockets do not require separate Threads
as Threads are expensive (3K threads easily crash
server machines just by themselves)
• The architecture accommodates both NIO and Blocking
IO nicely
24. WebRTC Support
In Java EE7 ?
• No but next revision of SIP Servlets
Specification (JSR 359) will support it.
• Deliver support for reusable Converged Web
and Real Time Communications Applications
• RTC Applications can leverage Java EE6
Technologies and Standards all the way
• Existing Applications can adds RTC
Capabilities easily
26. SIP JavaScript Stack
• JavaScript Framework allowing HTML5 Applications to
that handle Call Control (SIP) in the Browser
• Contributed by
27. SIP JavaScript Stack
Still ugly (to web developers) Low Level SIP details for now but working on higher abstractions, ie 1 liner
import and 1 liners to place call, reject, hangup etc
29. It's Only the Beginning
It's Open Source...
More Features to Add
●
Chat
Help yourself,
●
File Sharing Contribute !
●
Tab Sharing
●
Music Sharing
●
Screen Sharing
●
Presence
●
Location
●
Social Network Integration
●
…