Suggestions

close search

Add Messaging, Voice, and Authentication to your apps with Vonage Communications APIs

Visit the Vonage API Developer Portal
Developer Documentation is moving soon to a new location → https://developer.vonage.com Content will remain unchanged.

Session Creation Overview

When you connect to an OpenTok session on an app, you specify the session you want to connect to using an OpenTok session ID. Each session ID identifies a unique OpenTok session. You can think of a session as a room in which participants meet and chat.

The number of sessions you create and how clients connect to them depend upon the requirements of your app. If your app connects users with one another for a one-time meeting, create a unique session for that meeting. However, if your app connects users over various days in the same "room," then you can create one session and reuse it. If one group of users meet with each other, while other groups meet independently, create unique sessions for each group.

OpenTok sessions do not expire. However, authentication tokens do expire. Also note that sessions cannot explicitly be destroyed.

When you create a session, you can specify the following options, which are described in the sections that follow:

The OpenTok Media Router and media modes

When you create a session, you specify how clients in the session will send audio-video streams, known as the media mode. There are two options:

Routed sessions (sessions that use the OpenTok Media Router) also benefit from the following optimizations:

Adaptive media routing

Adaptive media routing (AMR) is a performance optimization for routed sessions. AMR evaluates each publisher's subscriber count individually. When a publisher has only one subscriber and no features that require the Media Router are in use (e.g., archiving, live streaming, SIP, etc.), the platform relays that publisher's media peer-to-peer to the subscriber instead of routing it through the Media Router. This reduces latency and can improve audio and video quality.

The session remains a routed session at all times. AMR does not change the session's media mode — it only changes the media path used under the hood. Your application code, tokens, and server-side session configuration stay exactly the same. The switch between peer-to-peer relaying and Media Router relaying is handled transparently by the client SDKs.

When AMR uses peer-to-peer relaying

AMR will relay media directly between a publisher and its subscriber (bypassing the Media Router in the media path) when all of the following are true:

For example, a session with four publishers and four subscribers can remain entirely in peer-to-peer relaying as long as each publisher has only one subscriber and no Media Router features are in use.

When AMR switches to the Media Router

The platform transitions a publisher's media to flow through the Media Router when any of the following conditions apply:

Once any trigger activates, all publishers' media will be routed seamlessly through the Media Router.

SDK support

AMR was introduced in OpenTok.js v2.24.7 and version 2.27.0 of the Android, iOS, Windows, macOS, Linux, and React Native client SDKs. Clients on older SDK versions in a routed session will always use the Media Router.

Implications for debugging and development

AMR is transparent to your application logic, but there are a few things to be aware of during development and troubleshooting:

Interaction with other features

Archive mode

When you create a session, you can set the archive mode so that the session is archived automatically. This only applies to routed sessions (sessions that use the OpenTok Media Router). By default, sessions are not automatically archived.

Location hints

When you create a session, you can set the IP address that Vonage video platform will use to select the best server to control the session in its global network. If no location hint is set when you create the session (which is recommended), the session control server is selected based on the location of the first client connecting to the session. Set a location hint only if you know the general geographic region (and a representative IP address) and you think the first client connecting may not be in that region. Specify an IP address that is representative of the geographical location for the session.

For media streaming, the system will always use the location hint to connect to the nearest media server (SFU), ensuring that media traffic is routed through the most optimal server for the client’s geographic location.

Best practices when creating sessions

Session ID reuse

When possible, do not reuse session IDs between different video chat conversations. Instead, generate new session IDs for each distinct video chat on your application.

This is important, especially when using OpenTok Inspector. In Inspector, session quality scores and data are indexed by session ID. A session ID that is reused for multiple conversations is more difficult to debug using Inspector, and sessions with re-used session IDs tend to report lower aggregate quality scores than the actual experienced call quality.

Enable session migration or limit sessions to 8 hours

Modern cloud auto-scaling makes it necessary to establish a minimum rotation time for services. Any sessions lasting more than 8 hours might be disconnected, as they may reside in services that are scaling out or scaling in.

Version 2.30.0 and later of the Vonage Video API client SDKs includes a session migration feature that seamlessly transfers all participants in a session to a new server during server rotation. This feature ensures session continuity with minimal disruption to participants. See Server rotation and session migration.

Note for clients using versions of the client SDKs lower than 2.30.0: We recommend that, for sessions planned to last longer than 8 hours, you migrate connected users to a new session before any potential timeout/reconnection events. This will ensure the best user experience.

Clients are also disconnected from a session if they do not publish or subscribe to streams within 4 hours of connecting.

You can use session monitoring to get notifications when sessions stop or time out and when a group of Video API servers for a session is scheduled to be rotated.

For more information, see Server Rotation.

Choosing Relayed vs. Routed session type

Use a relayed instead of a routed session, if you have only two participants (or maybe even three) and you are not using archiving. Using relayed sessions reduces the latency between participants, reduces the points of failure and you can get better quality video and audio in most cases.

Routed sessions are required if you want to archive your session. They are recommended if you have more than two or three participants in the session.

For more information, see The OpenTok Media Router and media modes.

Creating sessions

While working on a test version of your app, you can obtain a test session ID using a Project Page of of your Video API account.

You can also use one of the OpenTok server-side libraries or the OpenTok REST API to generate a session:

You can also use the OpenTok REST API to create a session.

If you need to dynamically generate multiple session IDs, use one of the OpenTok server-side libraries or the OpenTok REST API — not the Project Page.