JsSIP
{{Short description|Library for JavaScript}}
{{Use dmy dates|date=December 2017}}
{{Infobox software
| name = JsSIP
| logo = JsSIP JsSIP.png
| released = {{Start date and age|df=yes|2011}}
| latest release version = 3.4.3
| latest release date = {{Start date and age|2020|04|22}}{{cite web
| url = https://github.com/versatica/JsSIP/releases
| title = Releases
| work = versatica/JsSIP
| via = GitHub
| publisher = JsSIP
| access-date = 2 February 2017}}
| repo = {{URL|https://github.com/versatica/JsSIP}}
| programming language = JavaScript
| genre = WebRTC
| license = MIT
| website = {{URL|jssip.net}}
}}
JsSIP is a library for the programming language JavaScript. It takes advantage of SIP and WebRTC to provide a fully featured SIP endpoint in any website. JsSIP allows any website to get real-time communication features using audio and video. It makes it possible to build SIP user agents that send and receive audio and video calls as well as and text messages.{{cite web |url=http://www.frafos.com/wp-content/uploads/2014/11/FRAFOS_WebRTC_Deployment.pdf |title=WebRTC:How and Why? |publisher=FRAFOS |date=2015-01-12 |access-date=27 January 2015 |archive-date=12 June 2016 |archive-url=https://web.archive.org/web/20160612021646/http://www.frafos.com/wp-content/uploads/2014/11/FRAFOS_WebRTC_Deployment.pdf |url-status=dead }}
General features
- SIP over WebSocket transport
- Audio-video calls, instant messaging and presence
- Pure JavaScript built from the ground up
- Easy to use and powerful user API
- Works with OverSIP, Kamailio, and Asterisk servers
- SIP standards
Standards
JsSIP implements the following SIP specifications:
- {{IETF RFC|3261|link=no}} — SIP: Session Initiation Protocol
- {{IETF RFC|3311|link=no}} — SIP Update Method
- {{IETF RFC|3326|link=no}} — The Reason Header Field for SIP
- {{IETF RFC|3327|link=no}} — SIP Extension Header Field for Registering Non-Adjacent Contacts (Path header)
- {{IETF RFC|3428|link=no}} — SIP Extension for Instant Messaging (MESSAGE method)
- {{IETF RFC|4028|link=no}} — Session Timers in SIP
- {{IETF RFC|5626|link=no}} — Managing Client-Initiated Connections in SIP (Outbound mechanism)
- {{IETF RFC|5954|link=no}} — Essential Correction for IPv6 ABNF and URI Comparison in RFC 3261
- {{IETF RFC|6026|link=no}} — Correct Transaction Handling for 2xx Responses to SIP INVITE Requests
- {{IETF RFC|7118|link=no}} — The WebSocket Protocol as a Transport for SIP
Interoperability
=SIP proxies, servers=
JsSIP uses the SIP over WebSocket transport for sending and receiving SIP requests and responses, and thus, it requires a SIP proxy/server with WebSocket support. Currently the following SIP servers have been tested and are using JsSIP as the basis for their WebRTC Gateway functionality:
- [http://www.freeswitch.org FreeSWITCH]
- [http://www.frafos.com/webrtc/ FRAFOS ABC WebRTC Gateway] {{Webarchive|url=https://web.archive.org/web/20160720093356/http://www.frafos.com/webrtc/ |date=20 July 2016 }}
- [http://www.oversip.net OverSIP]
- [http://www.kamailio.org/ Kamailio]
- [http://www.asterisk.org Asterisk]
- [https://www.resiprocate.org reSIProcate and repro]
=WebRTC web browsers=
At the media plane (audio calls), JsSIP version 0.2.0 works with Chrome browser from version 24.
At the signaling plane (SIP protocol), JsSIP runs in any [http://caniuse.com/#feat=websockets WebSocket capable browser].
License
JsSIP is provided as open-source software under the MIT license.{{cite web|url=https://github.com/versatica/JsSIP/blob/master/LICENSE| title= JsSIP License}}
References
{{Reflist}}