REST Hooks - defaultApp etc.

mrinner

Member
Здравствуйте,
defaultApp и остальные apps, которые преднастроены по умолчанию, можно удалять?
Это какие-то тестовые\для demo?
Интересный момент - если удалить все, но при подключении указать defaultApp - то паблишинг работает, если другой app key - то нет. Т.е. defaultApp особенный.
Хочется чтобы ВСЕ hooks сливались в 1 app, где будет настроена авторизация, чтобы никто не мог паблишить без разрешения rest hook'а.
Возмно правильно не удалять defaultApp, и в нем прописать rest url аналогичный, как в своем app.
Разъясните пожалуйста.
 

Max

Administrator
Staff member
Добрый день.
Серверные приложения по умолчанию предназначены для того, чтобы функции сервера работали из коробки, не требуя настройки бэкенда при установке и тестировании.
В вашем случае можем рекомендовать удалить все приложения, кроме defaultApp, и изменить URL приложения на REST URL Вашего web-сервера, с которым осуществляется интеграция. В документации приведен пример пример авторизации пользователей по домену, там есть пример настройки defaultApp.
 
Last edited:

mrinner

Member
RTMP publishing тоже сломался, видимо без flashStreamingApp не работает.
надо в доке написать что это required apps, или как-то акцентировать внимание на эти моменты

07:36:16,632 INFO RestClient - API-ASYNC-pool-12-thread-6 Method connect not available for app flashStreamingApp
07:36:16,633 ERROR DelegateHandler - ForkJoinPool.commonPool-worker-1 Can't create handler
 

mrinner

Member
Вобщем, rtmp publish так и не удалось запустить, до тех пор, пока не ресетнул (переустановил) WCS в default и появились все предустановленные apps.

Расскажите еще, для чего используется "wcs3App"?
 
Last edited:

Max

Administrator
Staff member
Для публикации RTMP в случае, если у Вас только одно приложение, нужно его указать в URL:
Code:
rtmp://host:1935/live?appKey=defaultApp/streamName
Кроме того, приложение может быть указано явным образом как часть URL. Для этого необходимо в файле flashphoner.properties установить настройку
Code:
rtmp_appkey_source=app
Тогда приложение должно быть указано в URL потока как
Code:
rtmp://host:1935/key1/streamName
В этом случае значение live также рассматривается, как имя приложения, поэтому при публикации потока
Code:
rtmp://host:1935/live/streamName
на WCS сервере должно быть определено приложение live.
 

mrinner

Member
Code:
rtmp_appkey_source=app
RTMP publishing не работает.
настроил, перезапустил WCS. Добавил приложение live/live, добавил все rest api. Вижу на backend вызовы /connect, но OBS ругается.
В логе:
Code:
10:17:51,059 INFO            RestClient - API-ASYNC-pool-12-thread-3 RECEIVED REST OBJECT <==
URL:http://10.0.1.2:8021/wcs/rest/connect

OBJECT:
{
  "nodeId" : "5W0ioglZZ8o0KtfeprGY6qjEMgVOA0OV@192.168.88.202",
  "appKey" : "live",
.....

10:17:51,061 INFO                  Peer - ForkJoinPool.commonPool-worker-3 Flash client connected false
10:17:51,061 WARN         ServerHandler - ForkJoinPool.commonPool-worker-3 Connection failed, id 1 , channel [id: 0x1d694917, /192.168.88.200:58775 => /192.168.88.202:1935]
10:17:51,063 ERROR        ServerHandler - RTMP-pool-14-thread-2 channel closed: [id: 0x1d694917, /192.168.88.200:58775 :> /192.168.88.202:1935] CLOSED
10:17:51,064 INFO          RTMP-Session - RTMP-pool-14-thread-2 kill session 493439255
Если rtmp_appkey_source по умолчанию, то publishing работает, backend получает вызовы, все ок, кроме того, что можно publish делать на любой app, live1 live2 etc..
 

Max

Administrator
Staff member
Добрый день.
Для публикации RTMP в приложении должны быть настроены соответствующие обработчики. В вашем случае, с настройкой
Code:
rtmp_appkey_source=app
после того, как вы добавили приложение live
Code:
add app live live "http://localhost/my_app"
необходимо назначить обработчики командой
Code:
update app -m com.flashphoner.server.client.handler.wcs4.FlashStreamingHandler -c com.flashphoner.server.client.handler.wcs4.FlashStreamingCallbackHandler live
Есть и другой вариант:
1) Оставить rtmp_appkey_source по умолчанию
2) Удалить все приложения, кроме defaultApp (для WebRTC) и flashStreamingApp (для RTMP)
3) Указать URL бэкенда для этих приложений:
Code:
update app -l "http://backend/app" defaultApp
update app -l "http://backend/app" flashStreamingApp
В этом случае будет работать и стриминг RTMP, и авторизация для него
 

mrinner

Member
А в случае настройки "com.flashphoner.server.client.handler.wcs4.FlashStreamingHandler" получается что максимум 1 app может быть использован для rtmp? к примеру, может быть несколько точек входа live, customLive etc., то оба будут работать?
Code:
update app -m com.flashphoner.server.client.handler.wcs4.FlashStreamingHandler -c com.flashphoner.server.client.handler.wcs4.FlashStreamingCallbackHandler live
update app -m com.flashphoner.server.client.handler.wcs4.FlashStreamingHandler -c com.flashphoner.server.client.handler.wcs4.FlashStreamingCallbackHandler customLive
спасибо за разъяснения
 

mrinner

Member
Действительно, rtmp заработал в таком варианте, когда есть live, customLive со своими обработчиками.
Но теперь webrtc не работает, указан appKey - live, на backend вижу /connect вызов, а дальше тишина
Code:
07:54:20,926 INFO       WSServerHandler - WS-pool-19-thread-1 Orgign: https://iface.cc.loc:3001
07:54:20,929 INFO            RestClient - API-ASYNC-pool-12-thread-4 SEND REST OBJECT ==>
URL:http://10.0.1.2:8021/wcs/rest/connect
OBJECT:
{
  "nodeId" : "5W0ioglZZ8o0KtfeprGY6qjEMgVOA0OV@192.168.88.202",
  "appKey" : "live",
  "sessionId" : "/192.168.88.201:50546/192.168.88.202:8080-e86141a0-3fb0-4e4a-bcf8-4b9db72e5b6d",
....

07:54:20,932 INFO            RestClient - API-ASYNC-pool-12-thread-4 content -> {"appKey":"live","clientBrowserVersion":"Mozilla/5.0 (Wind

07:54:20,932 INFO            RestClient - API-ASYNC-pool-12-thread-4 RECEIVED REST OBJECT <==
URL:http://10.0.1.2:8021/wcs/rest/connect
OBJECT:
{
  "nodeId" : "5W0ioglZZ8o0KtfeprGY6qjEMgVOA0OV@192.168.88.202",
  "appKey" : "live",
  "sessionId" : "/192.168.88.201:50546/192.168.88.202:8080-e86141a0-3fb0-4e4a-bcf8-4b9db72e5b6d",
  "useWsTunnel" : false,
  "useWsTunnelPacketization2" : false,
....

и все
 
Last edited:

Max

Administrator
Staff member
Добрый день.
Для работы с разными потоками, используются разные типы приложений и соответствующие типу потока хэндлеры:
Flash (RTMP) - приложение flashStreamingApp и его хэндлеры
Websocket/WebRTC - приложения defaultApp и его хэндлеры
Работа с потоками возможно только с приложениями с соответствующими хэндлерами для вида потока (Flash (RTMP), Websocket/WebRTC). Т.е. нельзя например использовать приложение defaultApp с хэндлерами от flashStreamingApp для потока WbRTC.
Вы можете увидеть их значения в консоли WCS:
Code:
#  ssh -p 2001 admin@localhost
Code:
% show apps -d
c-class                                                                  name              appKey            URL                                       m-class
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
com.flashphoner.server.client.handler.wcs4.WCS4CallbackHandler           conferenceApp     conferenceApp     http://localhost:8081/apps/ConferenceApp  com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.WCS4Handler
com.flashphoner.server.client.handler.wcs4.WCS4CallbackHandler           clickToCallApp    clickToCallApp    http://localhost:8081/apps/ClickToCallApp com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.WCS4Handler
com.flashphoner.server.client.handler.wcs4.WCS4CallbackHandler           websocketChatApp  websocketChatApp  http://localhost:8081/apps/ChatApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.WCS4Handler
com.flashphoner.server.client.handler.wcs4.FlashStreamingCallbackHandler flashChatApp      flashChatApp      http://localhost:8081/apps/ChatApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.FlashStreamingHandler
com.flashphoner.server.client.handler.wcs4.FlashStreamingCallbackHandler defaultApp        defaultApp        http://localhost:8081/apps/EchoApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.FlashStreamingHandler
com.flashphoner.server.client.handler.wcs3.WCS3CallbackHandler           qaApp             qaApp             http://localhost:8081/apps/QAApp          com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.WCS4Handler
com.flashphoner.server.client.handler.wcs4.WCS4CallbackHandler           chatRoomApp       chatRoomApp       http://localhost:8081/apps/ChatRoomApp    com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.WCS4Handler
com.flashphoner.server.client.handler.wcs3.WCS3CallbackHandler           wcs3App           wcs3App           http://localhost:8081/apps/EchoApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs3.WCS3Handler
com.flashphoner.server.client.handler.wcs4.FlashStreamingCallbackHandler chatRoomApp       flashRoomApp      http://localhost:8081/apps/RoomApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.FlashRoomHandler
com.flashphoner.server.client.handler.wcs4.WCS4CallbackHandler           callApp           callApp           http://localhost:8081/apps/CallApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.WCS4Handler
com.flashphoner.server.client.handler.wcs4.WCS4CallbackHandler           chatRoomApp       roomApp           http://localhost:8081/apps/RoomApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.WCS4Handler
com.flashphoner.server.client.handler.wcs4.FlashStreamingCallbackHandler flashStreamingApp flashStreamingApp http://localhost:8081/apps/EchoApp        com.flashphoner.server.client.handle
                                                                                                                                                       r.wcs4.FlashStreamingHandler
Изменить настройки приложения можно через команды ядра WCS:
Code:
update app --c-class 'com.flashphoner.MyCallbackClass' --m-class 'com.flashphoner.MyMainClass' MyAppKey
 
Last edited:

mrinner

Member
Понятно, что by default оно работает, и проще сделать единый API, куда будут сливаться все запросы от всех приложений (appKey's), и там, основываясь на appKey, реализовать бизнес логику.
Спасибо за разъяснение.
 
А как тогда быть с кастомным модулем, где я возвращаю ПОСТ запросы? Например в ПОСТ запросе connect - я просто возвращаю то, что пришло. Так работает со всеми платформами (iOS/Android/etc.) но не с Флешом. То есть, сервер показывает статус, пост запрос, пост возврат, без ошибок, но все равно пишет Flash client connected false. Как быть?
Такая же ситуация с defaultApp - как вы и описывали выше.
 

Max

Administrator
Staff member
А как тогда быть с кастомным модулем, где я возвращаю ПОСТ запросы? Например в ПОСТ запросе connect - я просто возвращаю то, что пришло. Так работает со всеми платформами (iOS/Android/etc.) но не с Флешом. То есть, сервер показывает статус, пост запрос, пост возврат, без ошибок, но все равно пишет Flash client connected false. Как быть?
Уточните, пожалуйста, следующее:
1. Какую сборку WCS используете?
2. Какой кейс использования RTMP: публикация RTMP на WCS, воспроизведение RTMP с WCS, републикация WebRTC потока как RTMP на другой RTMP сервер?
3. Воспроизводится ли проблема из коробки, с бэкендом по умолчанию?
Также соберите отчет, как описано здесь, и вышлите, используя эту форму.
 
1. Сборка последняя 5.2.1031
2. Кейс простой - при попытке RTMP соединения на defaultApp - получаю ошибку NetConnection.Connect.Failed в то время как на flashStreamingApp - соединение работает
3. Да с коробки - во Flash просто укажите appKey - defaultApp
 

Max

Administrator
Staff member
2. Кейс простой - при попытке RTMP соединения на defaultApp - получаю ошибку NetConnection.Connect.Failed в то время как на flashStreamingApp - соединение работает
Это ожидаемое поведение. т.к. используются разные обработчики. Поэтому defaultApp и flashStreamingApp должны быть разными.
Если Вам необходимо, чтобы на стороне бэкенда работал один и тот же эндпойнт, сделайте так, как рекомендовано в этом сообщении.
 
Top