Практика
Содержание
Соединение в режиме реального времени с использованием 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, поэтому важно убедиться, что вы используете безопасные протоколы.