- 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
The following simple JavaScript code creates a JsSIP User Agent instance and makes a SIP call:
// Create our JsSIP instance and run it:varconfiguration={'ws_servers': 'ws://sip-ws.example.com','uri': 'sip:alice@example.com','password': 'superpassword'};varcoolPhone=newJsSIP.UA(configuration);coolPhone.start();// Make an audio/video call:// HTML5 <video> elements in which local and remote video will be shownvarselfView=document.getElementById('my-video');varremoteView=document.getElementById('peer-video');// Register callbacks to desired call eventsvareventHandlers={'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){varrtcSession=e.sender;console.log('call started');// Attach local stream to selfViewif(rtcSession.getLocalStreams().length>0){selfView.src=window.URL.createObjectURL(rtcSession.getLocalStreams()[0]);}// Attach remote stream to remoteViewif(rtcSession.getRemoteStreams().length>0){remoteView.src=window.URL.createObjectURL(rtcSession.getRemoteStreams()[0]);}}};varoptions={'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.
Check our Tryit JsSIP online demo:
- Main author. Core Designer and Developer.
- jmillan@aliax.net (Github @jmillan)
- Core Designer and Developer.
- ibc@aliax.net (Github @ibc)
- Core Designer.
- saghul@gmail.com (Github @saghul)
JsSIP is released under the MIT license.

