Практика

Обновлено: 2024-03-12
2 мин

Соединение в режиме реального времени с использованием WebRTC

WebRTC – это проект с открытым исходным кодом, позволяющий передавать аудио, видео и данные в режиме реального времени в браузере или через приложения. WebRTC имеет несколько Java-скрипт API – нажмите на ссылки, чтоб посмотреть примеры

  • getUserMedia(): захват аудио и видео
  • MediaRecorder: запись аудио и видео
  • RTCPeerConnection: потоковая передача аудио и видео между пользователями
  • RTCDataChannel: потоковая передача данных между пользователями.

Где я могу использовать WebRTC?

В браузерах Firefox, Opera и Chrome на компьютере и Андроиде. Также WebRTC работает в приложениях iOS и Android.

Что такое «сигналинг»?

WebRTC использует RTCPeerConnection для обмена потоковыми данными между браузерами, но ему необходим механизм для координации обмена данными и отправки контрольных сообщений. Этот процесс называется «сигналингом». Методы сигналинга и протоколы передачи не определены в WebRTC. Поэтому в коде придется использовать Socket.IO для обмена сообщениями, но существует много других альтернатив (https://github.com/muaz-khan/WebRTC-Experiment/blob/master/Signaling.md)

Что такое STUN и TURN?

WebRTC разработан для работы в P2P, поэтому пользователи могут подключаться по самому прямому возможному маршруту. Однако WebRTC создан для работы в реальных сетях: клиентским приложениям необходимо проходить через шлюзы NAT (http://en.wikipedia.org/wiki/NAT_traversal) и брандмауэры, а P2P-сеть нуждается в резервном варианте на случай сбоя прямого соединения. В рамках этого процесса API WebRTC используют STUN-серверы для получения IP-адреса вашего компьютера и TURN-серверы для работы в качестве серверов ретрансляции в случае сбоя P2P-соединения. (WebRTC в реальном мире объясняет более подробно - http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/)

Безопасен ли WebRTC?

Шифрование является обязательным для всех компонентов WebRTC, а его Javasсript API могут использоваться только из безопасных источников (HTTPS или localhost). Механизмы сигналинга не определены стандартами WebRTC, поэтому важно убедиться, что вы используете безопасные протоколы.