Posted on 16. January 2019

Выпущены WebRTC UWP и образец callstats.io интеграции

В прошлом году 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.

 



Exception: Stack empty.