Web JavaScript SDK для Web Call Server
Web SDK представляет собой набор скриптов с функциями для управления видеопотоками и звонками в браузере, такими как call, answer, hangup, playStream, stopStream и т.д.
Схема работы Web SDK:

Все коммуникации с сервером проходят по протоколу Websocket, по которому передаются все команды и статусы.
Технологии WebRTC, Flash и Websocket Streaming используются для передачи аудио и видеоданных.
Состав сборки Web JavaScript API
Чтобы начать работать с API нужно скачать сборку web-клиента здесь и скопировать в распакованном виде на ваш веб-сервер.
Для тестирования WebRTC-примеров в браузере Google Chrome необходимо чтобы все страницы открывались через https:// и использовался wss:// адрес сервера, например wss://wcs5-us.flashphoner.com:8888. Если вы используете собственный Web Call Server, нужно импортировать SSL-сертификаты через административный интерфейс.
Файлы сборки выглядят следующим образом:

Перечислим основные зависимости и содержание сборки:
|
dependencies — зависимости и вспомогательные файлы |
|
|
bootstrap |
CSS-фреймворк Bootstrap для оформления демо-примеров в папке examples/demo |
|
flash |
SWF-файл для передачи аудио и видео по технологии Flash если недоступен WebRTC |
|
ie8 |
Скрипты для поддержки работы в IE8 |
|
ie9 |
Скрипты для поддержки работы в IE9 |
|
jquery |
Вспомогательные скрипты jquery |
|
js |
Вспомогательные скрипты |
|
screen-sharing |
Расширение для скриншаринга в браузере Firefox в виде файла xpi. Это расширение собрано для домена flashphoner.com. Чтобы собрать его для вашего домена, воспользуйтесь рекомендациями к внедрению screen sharing. |
|
swf |
Здесь находится скрипт swfobject,js для позиционирования Flash-объекта на странице, а также player.swf, который используется в качестве тестового RTMP — плеера на демо-странице SIP as RTMP |
|
websocket-player |
Здесь находятся скрипты WSReceiver.js и WSPlayer.js, необходимые для работы Websocket Player в браузере iOS Safari и других браузерах |
|
examples / demo — тестовые примеры по адресу http://host:9091 |
|
|
demo/chat |
Текстовые чаты |
|
demo/click-to-call |
Кнопка ‘Click to Call’ для звонков из браузера |
|
demo/phone |
Web-телефон с минимальным интерфейсом |
|
demo/phone-ui |
Web-телефон с полным интерфейсом |
|
demo/rtmfp-client |
Тестовый Flash-клиент для публикации и воспроизведения потокового видео по RTMP и RTMFP протоколам |
|
screen-sharing |
Демонстрация экрана из браузера с минимальным интерфейсом |
|
sip-as-rtmp |
Трансляция SIP-звонка на RTMP сервер |
|
streaming |
Отправка потокового видео на сервер и воспроизведение с сервера в WebRTC и Flash браузерах, таких как Chrome, IE, и т.д. |
|
streaming-ui |
Веб-интерфейс для WebRTC-стриминга и браузеров Chrome, Firefox, Opera |
|
video-chat |
Видеочат между браузерами |
|
vow-player |
Воспроизведение видеопотоков по протоколу Websockets для браузеров iOS Safari и других браузеров, где нет поддержки WebRTC или Flash |
|
vow-player-ui |
Websocket-плеер с графическим интерфейсом |
|
examples / min — минимальный код для внедрения |
|
|
click-to-call |
Код для кнопки Click-to-Call |
|
phone |
Код для аудиочата либо аудио SIP-звонков |
|
phone-video |
Код для видеочата либо видео SIP-звонков |
|
screen-sharing |
Код для демонстрации экрана |
|
sip-as-rtmp |
Код для трансляции SIP-звонка на RTMP сервер или CDN |
|
streaming |
Код для трансляции и воспроизведения видеопотоков |
|
vow-player-min |
Код для воспроизведения видеопотоков в браузере iOS Safari по технологии Websocket streaming |
Таким образом, сборка содержит все необходимые примеры и код, необходимый для работы с Web Call Server.
Все примеры из директории examples / demo, доступны по адресу нашего тестового сервера https://wcs5-eu.flashphoner.com:8888. Если вы установили Web Call Server на вашу систему, примеры будут доступны по адресу http://host:9091 или https://host:8888
Примеры в examples / min содержат минимальный код для встраивания в вашу веб-страницу. Эти примеры, как правило, не меняют статусов и состояний кнопок, поэтому при работе с ними желательно использовать Chrome / Developer Tools для отладки.
Инициализация API
Следующий кусок скрипта получает ссылку на объект API:
var f = Flashphoner.getInstance();
Далее могут быть добавлены несколько слушателей, которые будут обрабатывать пришедшие с сервера события:
f.addListener(WCSEvent.ErrorStatusEvent, errorEvent);
f.addListener(WCSEvent.ConnectionStatusEvent, connectionStatusListener);f.addListener(WCSEvent.StreamStatusEvent, streamStatusListener);
Далее создается конфигурационный объект, который содержит все необходимые настройки API:
var configuration = new Configuration();
configuration.remoteMediaElementId = ‘remoteVideo’;
configuration.localMediaElementId = ‘localVideo’;
configuration.elementIdForSWF = «flashVideoDiv»;
configuration.pathToSWF = «../../../dependencies/flash/MediaManager.swf»;
В конечном итоге вызывается метод ‘init’ для инициализации:
f.init(configuration);
После инициализации API готово к работе.
Слушатели событий API
При инициализации мы использовали функции-слушатели, которые представляют собой события, которые нужно обработать.
|
Common |
|
|
Статус соединения с Web Call Server |
|
|
ErrorStatusEvent |
Ошибка, произошедшая в результате работы с API |
|
Streaming |
|
|
Статус видеопотока |
|
|
Calls |
|
|
Статус авторизации на SIP-шлюзе |
|
|
Статус входящего или исходящего звонка |
|
|
Входящий звонок |
|
|
Входящий запрос трансфера звонка |
|
|
Статус трансфера звонка |
|
|
Messaging |
|
|
Входящее текстовое сообщение |
|
|
Статус входящего или исходящего текстового сообщения |
|
|
Custom Data Exchange |
|
|
Получен входящий объект с данными |
|
|
Статус исходящего объекта с данными |
|
|
Others |
|
|
Статус багрепорта, который был отправлен на сервер |
|
|
RecordingStatusEvent |
Статус записи звонка |
|
Статус вызова Xcap запроса со стороны сервера стороннему Web-серверу |
|
Чтобы получить полную информацию по параметрам слушателей, обратитесь к документации Call Flow, где подробно описаны все параметры.
Пример использования слушателя. Выводим статс видеопотока в консоль браузера Google Chrome:
f.addListener(WCSEvent.StreamStatusEvent, streamStatusListener);
function streamStatusListener(event){
trace(event.status);
}
Конфигурация API
При инициализации API может быть задан конфигурационный объект такого вида:
var configuration = new Configuration();
configuration.remoteMediaElementId = ‘remoteVideo’;
configuration.localMediaElementId = ‘localVideo’;
configuration.elementIdForSWF = «flashVideoDiv»;
configuration.pathToSWF = «../../../dependencies/flash/MediaManager.swf»;
|
Параметр |
Описание |
|
remoteMediaElementId |
ID HTML5 video элемента на странице, который будет использоваться для воспроизведения видеопотока с сервера |
|
localMediaElementId |
ID HTML5 video элемента странице, который будет использоваться для отображения текущей использующейся веб-камеры. |
|
elementIdForSWF |
ID блока, в который будет вставлен Flash-объект для совместимости с браузерами IE, Edge, Safari |
|
pathToSWF |
Относительный либо абсолютный URL swf-файла MediaManager.swf, который отвечает за работу потокового видео в Flash, если браузер не поддерживает WebRTC |
|
wsPlayerCanvas |
ID HTML5 canvas-элемента, который будет использоваться для отображения видеопотока Websocket Player в браузере iOS Safari и в других браузерах, которые не поддеорживают WebRTC и Flash |
|
wsPlayerReceiverPath |
Путь к файлу WSReceiver.js, который реализует доставку видеопотока по технологии Websocket в браузерах, где не поддерживается WebRTC и Flash, таких как iOS Safari. |
|
videoWidth |
Ширина видео по умолчанию, которая будет использоваться для воспроизведения и публикации видеопотоков. |
|
videoHeight |
Высота видео по умолчанию, которая будет использоваться для воспроизведения и публикации видеопотоков. |
Инициализация заканчивается вызовом метода init с требуемыми параметрами:
f.init(configuration);
Web API имеет открытый исходный код, который доступен на Github
Основной файл API Flashphoner.js в котором можно найти полную реализацию API и все используемые параметры прямо в исходном коде.
Функции API
|
Connection |
Слушатели: |
|
connect |
Установить соединение с сервером |
|
disconnect |
Закрыть соединение с сервером. |
|
Streaming |
Слушатели: |
|
publishStream |
Отправить видеопоток на сервер |
|
unPublishStream |
Остановить отправку видеопотока на сервер. |
|
playStream |
Воспроизвести видеопоток с сервера. |
|
pauseStream |
Поставить воспроизведение на паузу. Данные с сервера присылаться не будут. |
|
stopStream |
Остановить воспроизведение видеопотока. |
|
Calls |
Слушатели: |
|
call |
Сделать исходящий звонок |
|
answer |
Ответить на входящий звонок |
|
hangup |
Сбросить звонок (положить трубку). |
|
hold |
Поставить звонок на удержание. |
|
unhold |
Снять звонок с удержания. |
|
transfer |
Сделать трансфер звонка. |
|
sendDTMF |
Отправить тоновый сигнал. |
|
Screen Sharing |
Слушатели: |
|
shareScreen |
Начать демонстрацию экрана. |
|
getScreenAccess |
Запросить доступ к захвату экрана. |
|
isScreenSharingExtensionInstalled |
Проверить установлено ли расширение, дающее доступ к захвату экрана. |
|
Messaging |
Слушатели: |
|
sendMessage |
Отправить текстовое сообщение. |
|
Custom Data Exchange |
Слушатели: |
|
sendData |
Отправить произвольный объект с данными. |
|
XCAP support |
Слушатели: |
|
sendXcapRequest |
Отправить XCAP запрос. |
|
Bug reporting |
Слушатели: |
|
submitBugReport |
Отправить багрепорт на сервер |
|
Remote logging |
|
|
pushLogs |
Отправить логи клиента на сервер |
|
Local controls |
|
|
getStatistics |
Получить статистику аудио и видео |
|
getAccess |
Получить доступ к камере / микрофону |
|
hasAccess |
Проверить есть ли доступ к камере / микрофону |
|
checkAndGetAccess |
Проверить доступ к камере / микрофону и если доступа нет, запросить его у браузера WebRTC или Flash Player. |
|
releaseCameraAndMicrophone |
Освободить камеру и микрофон |
|
getVolume |
Получить текущий уровень звука |
|
setVolume |
Установить уровень звука |
|
muteVideo |
Приостановить захват видео |
|
unmuteVideo |
Возобновить захват видео |
|
mute |
Приостановить захват микрофона |
|
unmute |
Возобновить захват микрофона |
|
isVideoMuted |
Проверить состояние захвата видео |
|
playFirstSound |
Проиграть звук по нажатию на какую-либо кнопку. Необходимо в мобильных браузерах, таких как iOS Safari для появления звука в динамиках смартфона. |
Применение Web JavaScript API на примерах
Работа API лучше всего иллюстрируется в примерах examples/demo и examples/min, которые описаны выше в составе сборки.
Ссылки на внедрение отдельных примеров кода:
Web-телефон для звонков через SIP-шлюз
Кнопка сlick-to-сall для онлайн-звонков с сайта
RTSP-HTML5 плеер для трансляций с IP-камер
Запись WebRTC видеопотоков из браузера
Онлайн трансляции с веб-камеры браузера
Трансляция потокового видео c Live Encoder по протоколу RTMP
Видеочат между браузерами или мобильными приложениями
Трансляция SIP-звонков на RTMP сервер или CDN
Демонстрация и трансляция экрана браузера по технологии WebRTC (Screen Sharing)
Поддержка облачного сервиса Amazon EC2 в Web Call Server
Мобильное SDK для WebRTC онлайн-трансляций и видеозвонков из приложения для iOS
Для получения дополнительной информации вы можете посетить форумы техподдержки или перейти к документации
Загрузить Web Call Server 5
Системные требования: Linux x86_64, 1 core CPU, 2 Gb RAM, Java
Установка:
- wget https://flashphoner.com/download-wcs5.2-server.tar.gz
- Распаковать и установить с помощью скрипта 'install.sh'
- Запустить сервер с помощью команды 'service webcallserver start'
- Открыть веб-интерфейс https://host:8444 и активировать вашу лицензию
Если вы используете серверы Amazon EC2, то скачивать ничего не нужно.

