http://code.google.com/p/sipml5/
Source code freely provided to you by Doubango Telecom ® under BSD terms.
Click here to download the API.
This is the world's first open source HTML5 SIP client (May 12, 2012) entirely written in javascript for integration in social networks (FaceBook, Twitter, Google+), online games, e-commerce sites... No extension, plugin or gateway is needed. The media stack rely on WebRTC.
The client can be used to connect to any SIP or IMS network from your preferred browser to make and receive audio/video calls and instant messages. It's also possible to make calls to PSTN or any SIP-legacy network using webrtc2sip.org
The protocol parsers (SIP, SDP...) are highly optimized using Ragel lookup tables and is suitable for embedded systems with limited memory and low computing power.
sipML5 solution also contains webrtc2sip, click-to-call, webrtc4all and SIP TelePresence (Video Group chat) client components.
sipML5 solution architecture (1)
sipML5 solution architecture (2)
Windows | OS X | Linux | Android | iOS |
Chrome, Firefox Nightly/Aurora , Firefox stable[1], IE[1], Opera[1], Safari[1] | Chrome, Firefox Nightly/Aurora | Chrome, Firefox Nightly | Chrome Beta, Firefox Nightly | Bowser[2] |
[1]: Thanks to webrtc4all
[2]: http://labs.ericsson.com/blog/bowser-the-world-s-first-webrtc-enabled-mobile-browser
The code is released under BSD license. More information at https://code.google.com/p/sipml5/wiki/License.
Short but not exhaustive list of supported features:
sipML5 works on any web browser supporting WebRTC but we highly recommend using Google Chrome or Firefox Nightly for testing.
The API is designed with love to make it easy to develop rich and robust HTML5 applications in few lines of code. No need to know how SIP work to start writing your code. Using this API, it will be a piece of cake to write HTML5 VoIP applications. Below, a very compact code showing how to initialize the engine, start the stack and make video call from bob to alice in less than 15 lines:
SIPml.init( function(e){ var stack = new SIPml.Stack({realm: 'example.org', impi: 'bob', impu: 'sip:[email protected]', password: 'mysecret', events_listener: { events: 'started', listener: function(e){ var callSession = stack.newSession('call-audiovideo', { audio_remote: document.getElementById('audio-remote'), video_local: document.getElementById('video-local'), video_remote: document.getElementById('video-remote') }); callSession.call('alice'); } } }); stack.start(); } ); // <audio id="audio_remote" autoplay="autoplay" /> // <video id="video-remote" autoplay="autoplay" /> // <video id="video-local" autoplay="autoplay" muted="true" />
Please don't send me technical questions by mail. I'll certainly not respond to the mail as I receive more than a hundred messages per day. Sorry :)
To get technical help, please subscribe to our developer's group or use the Issue tracker to report bugs.