Запуск проекта
-
Локальный запуск:
Запустите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
- Любой другой серверный канал связи