2.16.0 (August 11, 2021)
New Features
This release includes the Preflight API Public Beta (runPreflight
) to help test connectivity with Twilio servers. It can be used to detect issues prior to joining a Video Room or as part of a troubleshooting page.
The API connects two peer connections using Twilio's Signaling and TURN servers. It publishes synthetic audio and video tracks from one participant and ensures that other participant receives media on those tracks. After successfully verifying connectivity, it generates a report with information on the connection.
runPreflight
was originally introduced as an experimental API in 2.8.0-beta1
and has been updated based on feedback. In short, usage of the API will now be free of charge.
Example:
const { runPreflight } = require('twilio-video');
const token = getAccessToken();
const preflightTest = runPreflight(token);
preflightTest.on('progress', (progress: string) => {
console.log('preflight progress:', progress);
});
preflightTest.on('failed', (error: Error) => {
console.error('preflight error:', error);
});
preflightTest.on('completed', (report: PreflightTestReport) => {
console.log("Test completed in " + report.testTiming.duration + " milliseconds.");
console.log(" It took " + report.networkTiming.connect?.duration + " milliseconds to connect");
console.log(" It took " + report.networkTiming.media?.duration + " milliseconds to receive media");
});
The PreflightTestReport generated by preflightTest
on completed
provides statistics that can be useful in cases where there is a poor connection. Some of the useful statistics in the report are as follows:
- Packet loss, round trip time, and jitter observed on the connection
- Network timing measurements on the
progress
events, such as time to connect or to receive media. - Ice candidates and selected ice candidate pairs
preflightTest
emits a failed
event to indicate test failures. You can use the PreflightProgress events to better understand where the test failed and refer to this guide for interpreting common errors.
A few things to note:
- This function uses web audio API's. Browser's autoplay policies sometimes require user action before accessing these APIs. Please ensure that this API is called in response to user action like a button click.
- For testing limitations in available bandwidth, we recommend you use
testMediaConnectionBitrate
from the RTC Diagnostics SDK.
Bug Fixes
Fixed a bug where the SDK was holding on to internally maintained audio elements longer than needed, now they will be cleaned up once track has started. (VIDEO-6480)