В прошлом году Microsoft объявили о поддержке связи в режиме реального времени на универсальной Windows платформе, которая разработана на развилке Google WebRTC.org репозитория. Проект позволяет UWP разработчикам создавать совместимые с Chrome и похожие по функциям RTC приложения для всех Windows 10 платформ, включая настольные ПК, ноутбуки с HoloLens, Xbox и ARM поддержкой. Интерес общества к проекту увеличивается, о чем говорит 26 тысяч NuGet загрузок и сотни писем от разработчиков на GitHub и на почте. WebRTC и ORTC UWP были значительно улучшены, и Microsoft сообщили о своем вкладе в UWP поддержку репозитория Google WebRTC.org – более подробная информация будет опубликована в ближайшие месяцы.
Однако, постоянно поступает просьба от разработчиков, которые хотят лучше понять качество WebRTC вызовов для своих приложений. Это может быть звонок из HoloLens в десктопный браузер или Xbox приложение потокового видео в реальном времени. С этой целью Microsoft сотрудничает с callstats.io, чтобы обеспечить портативную .NET интеграцию платформы для WebRTC сервисов мониторинга и статистики!
Сегодня Microsoft объявили о выпуске NuGet .NET Standard 2.0 пакета для callstats.io, наряду с образцом кода на основе исходного кода PeerCC UWP. В качестве .NET Standard библиотеки, он доступен для всех поддерживаемых .NET реализаций, включая .NET Framework, .NET Core, UWP, Xamarin и Unity платформы (ознакомьтесь с документацией по требованиям к версии). Образец PeerConnection представляет собой UWP приложение, которое устанавливает двухсторонний видеовызов и отправляет WebRTC статистику в callstats.io службу с 10-секундными интервалами.
Пример приборной панели, показывающей статистику для всего сервиса:
Kognitiv Spark, лидер в области систем со смешанной реальностью и Windows 10 разработчик, использует callstats.io сервис со своим RemoteSpark приложением.
«Наша операционная команда столкнулась с вопросами, помогающими клиентам решить трудности с сетью, которые могут нарушить сеанс смешанной реальности», – говорит Райан Грум, соучредитель и технический директор Kognitiv Spark. «Благодаря встроенной поддержке Windows 10 мы смогли за несколько часов запустить callstats.io службу и начать использовать полные данные, доступные на ее панели, для обнаружения и решения проблем».
Ознакомьтесь с шагами для интеграции.
1) Создать учетную запись callstats.io.
- Перейдите по ссылке https://dashboard.callstats.io/register и создайте Организацию.
- Перейдите на вкладку приложений, чтобы создать приложение, и ввести SDK как другой «UWP».
- Нажмите на левой боковой панели «Настройки приложения» и перейти на вкладку «Безопасность».
- Нажмите «Новые учетные данные» и выберите ярлык ключа.
- Выберите тип ключа как «ECDSA» и введите открытый ключ.
- Под ключевыми деталями, нажмите на «вид» для учетных данных.
2) Для аутентификации с помощью callstats.io необходимо сгенерировать криптографические ключи и загрузить открытый ключ в сервис. С инструкциями в файле readme.md можно ознакомиться
здесь. После выполнения этого шага в проекте должны получиться Config класс и .p12 сертификат. Это все, что необходимо для аутентификации в API REST callstats.io.
3) Перейдите по ссылке на NuGet Org.WebRtc.Callstats пакет, доступный в Вашем проекте
здесь.
4) Если используется образец PeerCC, то можно найти классы для сбора данных из PeerCC и WebRTC в Stats папке, также можно использовать этот код в качестве примера для своей реализации. Добавлять файлы из папки PeerCC-Sample репозитория в проект нужно следующим образом:
- PeerConnectionControllerStateChange.cs: отслеживает RTCPeerConnection изменения состояния и собирает данные о состояниях одноранговых соединений для отправки в callstats.
- StatsController.cs: собирает данные из всего PeerCC семпла и использует Org.WebRtc.Callstats библиотеку для отправки подготовленных данных в REST API callstats.io.
- WebRtcStats.cs: подготавливает статистику, полученную из RTCPeerConnection, для связи с callstats.io через REST API.
5) Инициализируйте callstats.io сервис и отправьте SDP и ошибки приложения через StatsController. Для примера, см. Conductor.cs в PeerCC-Sample.
6) Обработайте изменения ICE состояния в RTCPeerConnection и используйте PeerConnectionStateChange для отправки данных на сервис:
_peerConnection.OnIceGatheringStateChange += async() =>
{
await PeerConnectionStateChange.StatsOnIceGatheringStateChange(_peerConnection);
Debug.WriteLine("Conductor: Ice connection state change, gathering-state=" + _peerConnection.IceGatheringState.ToString().ToLower());
};
_peerConnection.OnIceConnectionStateChange += async () =>
{
if (_peerConnection != null)
await PeerConnectionStateChange.StatsOnIceConnectionStateChange(_peerConnection);
else
{
await PeerConnectionStateChange.PeerConnectionClosedStateChange();
ClosePeerConnection();
}
};
7) Отправьте события уровня приложения для отключения и включения звука в StatsController. Для примера см. MainViewModel.cs в PeerCC-Sample.
Теперь образец должен быть полностью подключен к callstats.io сервису и готов к тестированию. Microsoft только начинает улучшать качество вызовов. В дальнейшем работа будет сфокусирована на усовершенствовании взаимодействия с пользователями с помощью дополнительных метрик и AI. Отправляйте Ваши фидбеки об использовании библиотеки, а также отзывы и предложения на
GitHub или на
email.