- 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 and Asterisk 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:
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.
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.