REST хуки уведомления¶
Описание работы уведомления на примере хука /StreamStatusEvent¶
REST хук /StreamStatusEvent относится к уведомлениям. Такие REST хуки используются для уведомления бэкенда о результатах тех или иных операций.
Например, хук StreamStatusEvent используется для передачи статусов операций, связанных с видеопотоками, такими как публикация и проигрывание.
Бэкенд сервер должен просто принимать этот хук, например, для сохранения информации о потоке в базе данных.
Из этой диаграммы видно, что хук /StreamStatusEvent идет по двум направлениям:
- На клиента - шаг 4
- На web-сервер - шаг 5
Пример:
POST /rest/my_api/StreamStatusEvent HTTP/1.1
Accept: application/json
Content-Type: application/json;charset=UTF-8
User-Agent: Java/1.8.0_111
Host: 192.168.1.101
Connection: keep-alive
Content-Length: 3614
{
"nodeId":"Hw47CFMBEchVOpBMDr29IxjudnJ1sjOY@192.168.1.101",
"appKey":"defaultApp",
"sessionId":"/192.168.1.102:4388/192.168.1.101:8443",
"mediaSessionId":"56141d10-fddc-11e6-ac3a-4d67d5b3360d",
"name":"b4e7",
"published":true,
"hasVideo":true,
"hasAudio":true,
"status":"PUBLISHING",
"sdp":".....",
"record":false,
"width":0,
"height":0,
"bitrate":0,
"quality":0,
"mediaProvider":"WebRTC"
}
HTTP/1.1 200 OK
Date: Tue, 28 Feb 2017 17:35:44 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Content-Length: 3656
Connection: close
Content-Type: application/json
{
"nodeId":"Hw47CFMBEchVOpBMDr29IxjudnJ1sjOY@192.168.1.101",
"appKey":"defaultApp",
"sessionId":"/192.168.1.102:4388/192.168.1.101:8443",
"mediaSessionId":"56141d10-fddc-11e6-ac3a-4d67d5b3360d",
"name":"b4e7",
"published":true,
"hasVideo":true,
"hasAudio":true,
"status":"PUBLISHING",
"sdp":".....",
"record":false,
"width":0,
"height":0,
"bitrate":0,
"quality":0,
"mediaProvider":"WebRTC"
}
Обработка ошибок¶
По-умолчанию, WCS не проверяет статус ответа на вызов REST хука /StreamStatusEvent. Т.е. если бэкенд вернет HTTP статус ошибки 403 или 500 или любой другой, то WCS это проигнорирует.
Чтобы WCS прореагировал на такую ошибку, нужно выставить restOnError: FAIL в настройках хука /StreamStatusEvent в объекте restClientConfig при создании подключения.
В этом случае на клиента будет отправлено отдельное событие ErrorEvent, и клиент будет оповещен об ошибке.

На шаге 6 бэкенд возвращает HTTP статус 500 Internal Error в ответ на вызов хука /StreamStatusEvent. WCS сервер на шаге 7 уведомляет клиента о возникшей ошибке.
Пример:
POST /rest/my_api/StreamStatusEvent HTTP/1.1
Accept: application/json
Content-Type: application/json;charset=UTF-8
User-Agent: Java/1.8.0_111
Host: 192.168.1.101
Connection: keep-alive
Content-Length: 3624
{
"nodeId":"Hw47CFMBEchVOpBMDr29IxjudnJ1sjOY@192.168.1.101",
"appKey":"defaultApp",
"sessionId":"/192.168.1.102:25301/192.168.1.101:8443",
"mediaSessionId":"e9c002d0-fde2-11e6-a2bf-c99492323844",
"name":"dc6a",
"published":true,
"hasVideo":true,
"hasAudio":true,
"status":"PUBLISHING",
"sdp":".....",
"record":false,
"width":0,
"height":0,
"bitrate":0,
"quality":0,
"mediaProvider":"WebRTC"
}