током як параметр.
Малюнок 7 - Відправка потоку в RTCPeerConnection
Після координації підключення і створення об'єкта RTCPeerConnection інший клієнт може отримати вхідний потік, коли спрацює подія onaddstream об'єкта RTCPeerConnection. Ця подія поверне об'єкт, містить потік клієнта та інформацію про з'єднання.
Рисунок 8 - Вилов вхідного потоку
Таким чином можна організувати найпростіший сеанс потокової передачі даних, використовуючи основні методи Web API WebRTC.
2 ПРОГРАМНА РЕАЛІЗАЦІЯ НА ОСНОВІ WEB API
2.1 Web-додаток, впроваджуване на сторонній ресурс
WebRTC дозволяє організовувати відеозв'язок засобами JavaScript і HTML5, іншими словами, кінцеве клієнтське додаток може бути розміщено на сайті або web-сторінці. Першою практичної реалізацією в рамках даної дипломної роботи була спроба створити переносний web-додаток, яке могло б бути вбудовано на сторонній сайт для певних клієнтів. Це було б корисно, якщо є необхідність у потокової передачі даних між клієнтами певного ресурсу, в той час як немає доступу до вихідного коду цього ресурсу і немає можливості його модифікувати. Наприклад, якщо функціонал реалізується стороннім розробником або самими клієнтами ресурсу. Для реалізації цього завдання була обрана соціальна мережа Вконтакте. Щоб створити якусь подобу інтеграції програми на сайт, було вибрано вбудувати його в браузерні розширення, яке буде запускати основний код при заході на сайт, а основний виконуваний код WebRTC-додатки розмістити на сторонньому сховище, звідки він буде довантажуватися в iframe. Весь вихідний код знаходиться у додатку Б даної дипломної роботи.
Загальна структура додатку має вигляд, зображений на малюнку 9.
Рисунок 9 - Схема роботи програми
Для обміну SDP-повідомленнями було вирішено використовувати базу даних Firebase, вона виконуватиме роль сигнального сокета. В якості хмарного сховища для виконуваного JavaScript був обраний GoogleDrive. Це обгрунтовано можливістю отримання доступу до файлу по захищеному https протоколом.
Реалізацію подібного програми можна розбити на основні етапи:
1. написання WebRTC-додатки та розміщення на хмарному сховище;
2. створення браузерного розширення, що взаємодіє з сайтом;
3. розбір HTML-верстки необхідних сторінок сайту і реалізація функцій парсинга;
4. інтегрування в розширення коду, що взаємодіє зі сторінками сайту;
5. підключення зовнішнього WebRTC-додатки до розширення;
6. впровадження WebRTC-додатки в сторінку сайту.
Для реалізації WebRTC-додатки була написана JavaScript-бібліотека RTCPeerBroadcasting, що має функції для створення підключень між клієнтами в режимі конференції та передачі потокових даних. Вихідний код бібліотеки RTCPeerBroadcasting знаходиться в додатку А.
Для створення об'єкта підключення в бібліотеці реалізована функція RTCPeerConnection, приймаюча як параметр об'єкт з настройками підключення.
Рисунок 10 - Об'єкт параметрів функції RTCPeerConnection
Приклад такого об'єкта показаний на малюнку 10, де attachStream - об'єкт відео потоку, який буде відправлено іншому клієнту, onICE - функція-обробник події підключення нового клієнта, отправляющая йому відповідь, onRemoteStream - функція-обробник події отримання потоку від клієнта, onRemoteStre...