2013-03-20 6 views
3

С тех пор как несколько дней я пытаюсь создать базовый веб-чат Videochat. У меня есть некоторые демонстрации, работающие локально, даже через локальную сеть. Но теперь я хочу построить один по моему по-настоящему основам, не перегружая некоторые Демоны.WebRTC HowTo PeerConnection через LAN с 2 браузерами

Но я до сих пор не получаю полное одноранговое соединение.

Например. этот пример кажется сломанным, потому что я не могу «createSignalingChannel()»; w3.org/TR/webrtc/#simple-example

Некоторые другие примеры (https://webrtc-experiment.appspot.com/) хотят, чтобы я связывал их скрипты, но я этого не сделаю, потому что я хочу понять магию однорангового соединения и как получить рукопожатие между двумя браузерами.

Я также изучил примеры с Google App Engine, но это не то, что я хочу.

Я хочу запустить его в очень простой JS и HTML как минимум на том, что необходимо.

Вот мой код: https://github.com/mexx91/basicVideoRTC EDIT: Если теперь работать

Так что же я должен добавить, чтобы получить рукопожатие и пэра соединение, так что я могу послать, например. mediaStream to eachother.

Большое спасибо!

ответ

3

createSignalingChannel() - это всего лишь псевдокод, чтобы проиллюстрировать существование отдельного канала. Вам нужно, чтобы начальное соединение обрабатывало отдельный канал сообщений.

Вы можете достичь этого с помощью размещенных сервисов, таких как Pusher, Brightcontext или PubNub, или вы можете разместить свой собственный сервер с проектами с открытым исходным кодом, такими как socket.io или SignalR.

Тогда вам просто нужно отправить предложения, ответы и iceCandidates через ваш отдельный канал.

Список Realtime Услуги: http://www.leggetter.co.uk/real-time-web-technologies-guide

+0

Большое спасибо. Я попробую его теперь с socket.io через nodeJs. – Mexx

+0

@Max Пример с socket.io и WebRTC https://github.com/rohansingh/rtc-p2p – Skomski

1

Представьте видеоконференцсвязи веб-приложение, которое пользователи A и B первоначально доступ от некоторых веб-сервера. Предположим, что веб-приложение поддерживает присутствие, поэтому веб-сервер знает, кто сейчас находится в режиме онлайн. Imahine UI позволяет A попробовать и поместить видеовызов на B. Через say XMLHttpRequest() браузер A сообщает серверу, что это нужно, и javascript B выскакивает что-то, говорящее, что A хочет позвонить B. Нет, WebRTC вообще не произошло все же. Но на этом этапе A может косвенно связываться с B путем отправки сообщений с использованием, например, XMLHttpeRequest. В языке WebRTC это «канал сигнализации». Таким образом, A и B могут взаимодействовать со своими агентами ICE для обнаружения адресов кандидатов и описаний SDP и отправлять их каждому из серверов через этот сигнальный канал. Например. веб-приложение на A вызывает API WebRTC для получения своих кандидатов ICE и упаковывает их по своему усмотрению, чтобы отправить его читателю B. B, оно получает это сообщение с сервера (например, через WebSocket или длительный опрос) и hyence, который он может распакуйте это и отформатируйте по мере необходимости, чтобы отправить агент ICE на B, используя объект RTCPeerConnection. Similalrly, предложение и ответ SDP могут быть отправлены между двумя приложениями, и пройдите в ICE agnet в браузерах, чтобы получить согласованные медиаформаты и т. Д. На этом этапе медиа-соединения могут быть установлены uo браузером (потоки meida добавлены к RTCPeerConnection изначально (которые не сообщаются, но имеют атрибуты, которые могут быть запрошены для описания кодека и т. д., и когда API попросят создать описание SDP, он делает это с использованием этих атрибутов, но настраивает IP-адрес и порт, основанный на том, как агент ICE в каждом локальном браузере выяснил, какие адреса могут достигнуть этого локального браузера/порта (обход NAT).