Сервер Openvidu (докер KMS + OV), запись 4xx ошибка ошибка - PullRequest
0 голосов
/ 07 ноября 2019
  • У меня успешно работает докер с KMS + OV сервером.
  • Также у меня есть успех с примером записи node.js.

    Когда я пытаюсь использовать небезопасные примеры(REST API) я исправил создание сеансов соединения токена, но только 'https://MY_DOMAIN:4443/api/recording/start 403' я получил ошибку 403.

Доступ к выборке в 'https://MY_DOMAIN:4443/api/recording/start' from origin 'https://MY_DOMAIN' заблокирован политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ удовлетворяет ваши потребности, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Мой запрос:

 fetch(this.ovServerUrl + '/api/recording/start', {
        method: 'POST',
        // mode: 'no-cors', // no-cors, *cors, same-origin
        // cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
        // credentials: 'same-origin', // include, *same-origin, omit
        body: JSON.stringify({
          session: root.session.sessionId,
          outputMode: 'INDIVIDUAL'
          // hasAudio: hasAudio,
          // hasVideo: hasVideo
        }),
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
          'Authorization': 'Basic ' + btoa('OPENVIDUAPP:' + this.ovSecret)
        }
      }).then(res => {
        console.log('TEST REC', res)
        // ori
        // document.getElementById('forceRecordingId').value = res.id
        root.checkBtnsRecordings()
        // this.getElement('textarea-http').innerHTML = (JSON.stringify(res, null, '\t'))
        console.log('>>>rec response>>>' + JSON.stringify(res, null, '\t'))
        res.json().then(r => {
          console.log('GOOOOD', r)
        }).catch(err => {
          console.log(' 1) Start recording WRONG error is ', err)
        })
      }).catch(error => {
        console.log(' 2) ... Start recording WRONG err :', error)
      })
    }

Этоаналогичен другим запросам, но все еще не работает.

Это моя командная строка для запуска:

docker run -d --net="host" 
  -e openvidu.secret=YOUR_SECRET 
  -e openvidu.publicurl=https://MY_DOMAIN:4443 
  -e openvidu.cdr=true -e server.port=4443 
  -e KMS_STUN_IP=MY_SERVER_IP 
  -e KMS_STUN_PORT=19302 
  -e KMS_TURN_URL=myuser:mypass@MY_DOMAIN:3478 
  --rm -v /var/run/docker.sock:/var/run/docker.sock 
  -v /var/kurento/rec:/var/kurento/rec 
  -e openvidu.recording=true 
  -e MY_UID=$(id -u $USER) 
  -e openvidu.recording.path=/var/kurento/rec 
  -e openvidu.recording.public-access=true 
  -e server.ssl.key-store=/var/kurento/YOUR_KEYSTORE_NAME.jks   
  -e server.ssl.key-store-password=PASS2 
  -e server.ssl.key-alias=YOUR_KEYSTORE_ALIAS_PASS2 openvidu/openvidu-server-kms:cert-2019

Я уже установил разрешение для папки /rec ...

Даже если я включаю режим записи ВСЕГДА, появляется сообщение об ошибке.

В документе я нашел:

Если истинный путь https://OPENVIDU_IP:[server.port]/[openvidu.recording.path] будет общедоступным через https://OPENVIDU_IP:[server.port]/recordings

Но я получаю это:

Whitelabel Error Page

Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант.

пт 08 нояб. 12:56:31 UTC 2019 Произошла непредвиденная ошибка (тип = Не найдено, статус = 404). Нет доступных сообщений

Я проверил TURN / webSock config intro docker VM, там все нормально.

Поскольку мой пример работы с node.js должен быть чем-то вроде apache (я несмотрите какие-нибудь логи на докер KMS на момент вызова REST)?!? ,Начальная процедура сеанса я начинаю с arg, как сервер узла делает с:

 new OpenVidu(sName , secret)

, но все равно ничего.

Я нашел это из журналов wss:

  Sending request: {method:"joinRoom", params: {"token":"wss://MY_DOMAIN:4443?sessionId=123&token=8p9iidmfcn8lguia&role=PUBLISHER&version=2.10.0","session":"123","platform":"Safari 12.1.2 on OS X 10.12.6","metadata":"{\"clientData\":\"NIJKOLA\"}","secret":"","recorder":false}}

Может быть, этоэто проблема: "secret":"","recorder":false Я не уверен, правильно ли это жестко кодировать это в клиенте, как token = token + ....

Я реализую конфигурацию GET:

maxRecvBandwidth: 1000 
maxSendBandwidth: 1000
minRecvBandwidth: 300
minSendBandwidth: 300
openviduCdr: true
openviduPublicurl: "https://MY_DOMAIN:4443"
openviduRecording: true
openviduRecordingAutostopTimeout: 120
openviduRecordingCustomLayout: "/opt/openvidu/custom-layout/"
openviduRecordingNotification: "publisher_moderator"
openviduRecordingPath: "/var/kurento/rec/"
openviduRecordingPublicAccess: true
openviduRecordingVersion: "2.9.0"
version: "2.10.0"

**

ОБНОВЛЕНИЕ:

**

После жесткого кода:

token = token + "recorder=true;secret=mysecret";

И

  recordingMode: 'ALWAYS',

Я наконец-то добился успеха.

Но у меня все еще есть ошибка с INDIVIDUAL + REST API '/ api / recording / start' ....

...