WebRTC SDK

Voice calling SDK for Web and React Native

The jambonz WebRTC SDK enables browser and mobile applications to make and receive voice calls through a jambonz SBC using SIP over WebSocket.

It supports Web (React) and React Native (iOS + Android) with a unified API. JsSIP is used internally for SIP signaling but is completely hidden from SDK consumers.

Source code: github.com/jambonz/webrtc-sdk

Packages

PackagePlatformInstall
@jambonz/client-sdk-webBrowser / Reactnpm install @jambonz/client-sdk-web
@jambonz/client-sdk-react-nativeiOS + Androidnpm install @jambonz/client-sdk-react-native react-native-webrtc

Both packages share the same API. The only difference is the import path.

What It Does

  • SIP registration with a jambonz SBC over WebSocket
  • Outbound calls to phone numbers, SIP users, queues, conferences, and applications
  • Incoming calls with answer/decline
  • In-call controls — mute, hold, DTMF, transfer (blind + attended)
  • Call quality monitoring — jitter, packet loss, round-trip time
  • Audio device management — enumerate and switch microphones/speakers
  • SIP messaging — send and receive SIP MESSAGE
  • React hooksuseJambonzClient() and useCall() for declarative React integration

Call Types

The SDK supports five types of outbound calls, matching jambonz SBC routing:

MethodDescriptionSIP Target
client.call(number)Call a phone number or SIP URIsip:number@domain
client.callUser(username)Call a registered SIP usersip:username@domain
client.callQueue(name)Take a call from a queuesip:queue-name@domain
client.callConference(name)Join a conference roomsip:conference-name@domain
client.callApplication(sid)Call a jambonz applicationsip:app-sid@domain

Quick Example

1import { createJambonzClient } from '@jambonz/client-sdk-web';
2
3const client = createJambonzClient({
4 server: 'wss://sbc.example.com:8443',
5 username: 'user1',
6 password: 'pass123',
7});
8
9await client.connect();
10
11// Make a call
12const call = client.call('+15551234567');
13call.on('accepted', () => console.log('Connected!'));
14call.on('ended', () => console.log('Call ended'));
15
16// Receive incoming calls
17client.on('incoming', (incomingCall) => {
18 incomingCall.answer();
19});