Описание
Все SDK, предоставляемые WCS: WebSDK, AndroidSDK, iOS SDK используют для взаимодействия с сервером на транспортном уровне протокол WebSocket. Поверх WebSocket реализован набор команд для обмена SDP между клиентом и сервером и установки WebRTC медиасессии.
Обмен командами по WebSocket можно наблюдать во время работы примеров приложений WebSDK, например, Two Way Streaming в браузере Chrome. Для этого откройте инструменты разработчика (F12), раздел Network, выберите имя сервера и перейдите на вкладку Frames
Наборы команд для публикации и воспроизведении видеопотоков
connect
При установке соединения с сервером и создании сессии обмен командами производится следующим образом:
1. Клиент отправляет сообщение connection
{ "message":"connection", "data": [ { "appKey":"defaultApp", "mediaProviders":["WebRTC","MSE","WSPlayer"], "clientVersion":"0.5.28", "clientOSVersion":"5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36", "clientBrowserVersion":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36" } ] }
Параметры сообщения
Параметр | Описание |
---|---|
appKey | Идентификатор серверного приложения, которое должно взаимодействовать с бэкенд-сервером во время сеанса |
mediaProviders | Список поддерживаемых клиентом технологий публикации или воспроизведения потока |
clientVersion | Версия SDK клиента |
clientOSVersion | Версия операционной системы клиента |
clientBrpwserVersion | Версия браузера клиента |
2. Сервер отправляет сообщение getUserData
{ "message":"getUserData", "data": [ { "useWsTunnel":false, "useWsTunnelPacketization2":false, "useBase64BinaryEncoding":false, "mediaProviders":["WebRTC","MSE","WSPlayer"], "authToken":"/5.129.23.83:50066/188.40.244.249:8443", "status":"ESTABLISHED", "clientVersion":"0.5.28", "clientOSVersion":"5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36", "clientBrowserVersion":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36", "forceLogger":false, "keepAlive":false } ] }
Это сообщение подтверждает установку WebSocket соединения и успешное получение данных от клиента
Параметры сообщения
Параметр | Описание |
---|---|
useWSTunnel | Используется ли WS-туннель |
useWsTunnelPacketization2 | Используется ли пакетизация при использовании WS-туннеля |
useBase64BinaryEncoding | Используется ли Base64 кодировка |
mediaProviders | Список поддерживаемых клиентом технологий публикации или воспроизведения потока |
authToken | Токен авторизации, он же идентификатор сессии, сформированный из IP адреса и порта клиента и сервера |
status | Статус WebSocket сессии |
clientVersion | Версия SDK клиента |
clientOSVersion | Версия операционной системы клиента |
clientBrpwserVersion | Версия браузера клиента |
forceLogger | Включено ли принудительное логирование |
keepAlive | Используются ли Keep Alive |
3. Сервер отправляет сообщение getVersion
{ "message":"getVersion", "data": [ "5.1.3674-9b5b684ac81a1c7e62d7a38e0c3a2c2433faacf9" ] }
В сообщении указывается версия WCS
4. При отсутствии других сообщений со стороны клиента, сервер периодически отправляет сообщение ping
{ "message":"ping", "data":[] }
на которое клиент должен ответить сообщением pong
{ "message":"pong", "data":[null] }