SignalWire RELAY | WebRTC with SIP over WebSockets

WebRTC with DTLS, ICE, SIP over WebSockets. Video calls in a browser - it just works with SignalWire.

Mar 27, 2019

By Erik Lagerway, VP of Product

The heading says it all, we are now proudly supporting industry-standard WebRTC SIP over WebSockets. This means that you can use off-the-shelf JS libraries + SIP to connect to SignalWire services.

Services enabled in a WebRTC compliant browser include:

  - Audio calling to/from web and PSTN.
  - Video calling between web and SIP endpoints. 
  - Programmatically creating SIP endpoints and directing calls to your WebRTC endpoints


Testing WebRTC endpoints using SIP over WebSockets on SignalWire

At SignalWire, it couldn’t be easier to deploy a SIP endpoint in a browser. In this article, we will explain how to test open source WebRTC + SIP over WebSockets libraries with the SignalWire network.

First, we create our SIP endpoints in the SignalWire dashboard (you could also do this via API).

We always like to use secure protocols whenever possible, so let’s turn on Encryption Required:

Now that we have created our endpoints in the SignalWire network. Let’s test a popular JS SIP library (JSSIP) over at https://tryit.jssip.net/.

If we click on the gear we can configure the settings we need to connect to SignalWire.

Let’s drop in our SIP URI, which is our SIP username and domain. In my case it’s the following:
jssip1@erik-b2c84db4.sip.signalwire.com

Then, let’s authenticate by using our password that we set in the SignalWire dashboard for this SIP endpoint.

Next up is the WebSocket URI, which is just the domain with a wss:// in front of it:
wss://erik-b2c84db4.sip.signalwire.com

Let’s set the transport as TLS, to match our encryption on SignalWire as set on the SIP endpoints previously.

The Registrar server is domain our endpoint:
erik-b2c84db4.sip.signalwire.com

Session timers can be on or off.

Now we can click OK, and we should see the endpoint register and turn from yellow to green.

Now let’s set up a second endpoint. I simply opened a new incognito window in Chrome on mac and entered in the second SIP endpoint details.

With both endpoints registered, we can place our first call. As long as we are using SIP endpoints in the same project, we can use short names (jssip1 <-> jssip2 in my case) to place the call.

If all goes well we should see something something like this, hopefully your participants are better looking than mine:

We can also attribute a phone number to our SIP endpoint and receive calls from the PSTN:

You can also place outbound calls to the PSTN from the WebRTC client.

Disruptive Pricing

Our fee structure is simple, we meter per minute / per call leg, we don’t charge for setting up calls programmatically nor do we charge for securing your calls, because security is a good thing.

US Calling Rates

US Inbound $0.00255*
US Outbound $0.0065*
SIP In/Out $0.0007*

For all our disruptive pricing check here.

Come and build something great on SignalWire!

Developer documentation for SIP:
https://docs.signalwire.com/topics/relay-rest/#resources-sip-endpoints

Main developer documentation site:
https://docs.signalwire.com/

Friendly support can be found in our online community.

P.S. We always announce features to our community before bringing it to the general public, so sign up for your free SignalWire account today and join our Community!

* Please check our pricing page for up-to-date pricing.