RELAY Realtime SDK v3
Node.js server SDK for real-time communication (deprecated - consider upgrading to v4)
The RELAY v4 is the most up-to-date version of the Realtime RELAY SDK. Consider reading the Upgrading to RELAY v4 page to understand the benefits of RELAY v4 and how to upgrade.
The SignalWire Realtime SDK v3 is a Node.js server SDK that enables real-time communication through WebSocket connections. Built on an event-driven architecture, it provides dedicated namespaces for voice, video, messaging, chat, pub/sub, and task management.
Getting Started
Create a RELAY Application
For Voice, Messaging, and Task namespaces, create a RELAY Application resource in your dashboard:
- Set a name for your application
- Choose a reference (e.g., “support”, “sales”) that matches your client’s topics
- Assign phone numbers or SIP addresses to route calls to this application
Core Concepts
WebSocket Event Architecture
The SDK operates on a bidirectional WebSocket connection between your application and SignalWire’s servers. This enables real-time communication through a structured event system:
When you call a method like client.dial(), the SDK sends your request over the WebSocket connection and SignalWire processes it and responds immediately. These method calls follow a request-response pattern - the returned promise resolves with the result data, such as a Call object containing all the details of your newly created call.
The .on() methods handle a different communication pattern: real-time event notifications. These are asynchronous events triggered by external actions - like when someone calls your number (call.received), sends you a message (message.received), or when something happens in a video room you’re monitoring (member.joined). Unlike method responses, these events arrive whenever the triggering action occurs, not as a direct response to your code.
Authentication and Access Control
All SDK clients authenticate using project credentials. Voice, Messaging, and Task namespaces also require topic subscriptions that control event routing:
Your project ID and token are available in the SignalWire Dashboard. These authenticate your WebSocket connection and establish your access permissions.
Topics (formerly contexts) work with RELAY Application resources to route events. When you assign a phone number or a SIP address to a RELAY Application with reference “support”, SignalWire routes all calls from that number or SIP address to SDK clients authenticated with the “support” topic. This creates strict access control - a client subscribed to “support” cannot receive events intended for “sales”.
The routing process is straightforward: incoming calls hit a phone number or a SIP address, SignalWire checks the RELAY Application’s reference, then delivers the event only to clients with matching topics. This happens automatically based on your authentication.
Available Namespaces
Make and receive calls, play audio, record, and build IVRs
Monitor video rooms, members, recordings, and streams
Publish and subscribe to real-time message channels
Build chat applications with members and messages
Distribute tasks to workers via topic routing
Classes
Functions
createClient
ConstcreateClient(userOptions):Promise<RealtimeClient>- Deprecated — See RealtimeClient for more details.
Deprecated You no longer need to create the client manually. You can use the product constructors, like Video.Client, to access the same functionality.
Creates a real-time Client.
Parameters
Returns
Promise<RealtimeClient> - Deprecated — See RealtimeClient for more details.
an instance of a real-time Client.
Example
getConfig
ConstgetConfig():GlobalConfig
Returns
GlobalConfig