Запуск проекта
- 
  Локальный запуск: 
 Запуститеserver.pyна хостовой машине и откройтеindex.htmlв браузере.
- 
  Запуск на разных машинах: - Серверную часть (server.py) можно запустить на отдельной машине (по вашему усмотрению)
- В файле index.htmlобязательно укажите IP-адрес сервера и порт
 
- Серверную часть (
- 
  Удалённое подключение: 
 Для подключения с удалённой машины или виртуальной среды:- Откройте index.htmlс корректными настройками IP/порта
- После этого установится соединение между участниками
 
- Откройте 
WebRTC: Ключевые функции и их роли
Основные функции WebRTC
- 
  navigator.mediaDevices.getUserMedia()
 Захватывает поток с камеры и микрофона. Результат —MediaStream, который сразу выводится в<video id="localVideo">и добавляется вRTCPeerConnection.
- 
  new RTCPeerConnection(rtcConfig)
 Создаёт объект соединения для обмена медиапотоками и данными. В конфигурации указываются STUN/TURN-серверы для поиска и пробивки NAT.
- 
  pc.addTrack(track, stream)
 Добавляет каждую дорожку (video/audio) из локального потока в соединение для передачи удалённой стороне.
- 
  pc.onicecandidate
 Срабатывает при нахождении нового ICE-кандидата (IP-адреса/порта для пиров). Кандидаты передаются другому участнику через канал сигнализации.
- 
  pc.createOffer()/pc.createAnswer()
 Создают SDP-оффер и SDP-ответ — описания возможностей кодеков, протоколов и сетевых каналов. Оффер генерируется инициатором, ответ — принимающей стороной.
- 
  pc.setLocalDescription()/pc.setRemoteDescription()
 Устанавливают локальное SDP-описание и SDP от партнёра. Обеспечивают фазу согласования (SDP-handshake).
- 
  pc.ontrack
 Событие возникает при добавлении дорожек удалённой стороной. ПолученныйMediaStreamвыводится в<video id="remoteVideo">.
- 
  Сигнализация ( sendSignal/onSignal)WebRTC не включает механизм передачи офферов/ответов и кандидатов. Реализация сигнализации должна быть выполнена самостоятельно через: - WebSocket
- HTTP-polling
- Любой другой серверный канал связи
 
