/JsSIP

JsSIP, the JavaScript SIP library

Primary LanguageJavaScriptOtherNOASSERTION

Build Status

Overview

  • SIP over WebSocket (use real SIP in your web apps)
  • Audio/video calls (WebRTC), instant messaging and presence
  • Lightweight! (~140KB)
  • Easy to use and powerful user API
  • Works with OverSIP, Kamailio, Asterisk and repro (reSIProcate) servers (more info)
  • Written by the authors of draft-ietf-sipcore-sip-websocket and OverSIP

Getting Started

The following simple JavaScript code creates a JsSIP User Agent instance and makes a SIP call:

// Create our JsSIP instance and run it:

var configuration = {
  'ws_servers': 'ws://sip-ws.example.com',
  'uri': 'sip:alice@example.com',
  'password': 'superpassword'
};

var coolPhone = new JsSIP.UA(configuration);

coolPhone.start();


// Make an audio/video call:

// HTML5 <video> elements in which local and remote video will be shown
var selfView =   document.getElementById('my-video');
var remoteView =  document.getElementById('peer-video');

// Register callbacks to desired call events
var eventHandlers = {
  'progress': function(e){
    console.log('call is in progress');
  },
  'failed': function(e){
    console.log('call failed with cause: '+ e.data.cause);
  },
  'ended': function(e){
    console.log('call ended with cause: '+ e.data.cause);
  },
  'started': function(e){
    var rtcSession = e.sender;

    console.log('call started');

    // Attach local stream to selfView
    if (rtcSession.getLocalStreams().length > 0) {
      selfView.src = window.URL.createObjectURL(rtcSession.getLocalStreams()[0]);
    }

    // Attach remote stream to remoteView
    if (rtcSession.getRemoteStreams().length > 0) {
      remoteView.src = window.URL.createObjectURL(rtcSession.getRemoteStreams()[0]);
    }
  }
};

var options = {
  'eventHandlers': eventHandlers,
  'mediaConstraints': {'audio': true, 'video': true}
};


coolPhone.call('sip:bob@example.com', options);

Want to see more? Check the full Getting Started section in the project website.

Online Demo

Check our Tryit JsSIP online demo:

Website and Documentation

Download

Authors

José Luis Millán

Iñaki Baz Castillo

Saúl Ibarra Corretgé

License

JsSIP is released under the MIT license.