Kurento node Hello World tutorial не подключается к серверу Kurento на AWS

#kurento

#kurento

Вопрос:

При запуске руководства kurento_hello_world Nodejs клиенту Kurento не удается подключиться к моему медиасерверу Kurento, работающему на AWS. Однако соответствующий учебник по Javascript для браузера отлично работает с точно такими же настройками.

Моя настройка включает медиасервер Kurento, работающий на экземпляре EC2. Это было установлено с использованием общедоступной конфигурации CloudFormation для сервера. Я правильно настроил сертификаты и убедился, что мои браузеры доверяют им.

У меня установлены и запускаются учебные пособия из отдельного экземпляра EC2. Я использую версию 6.10.0 из руководств (однако, я испытываю то же самое с 6.9.0).

Я тестирую это с помощью Chrome.

Для браузера JavaScript Hello World tutorial я обновил js/index.js файл для включения:

 var args = getopts(location.search,
{
  default:
  {
    // ws_uri: 'wss://'   location.hostname   ':8433/kurento',
    ws_uri: 'wss://<IP_Of_KMS_On_AWS>:8433/kurento', // Kurento server on AWS
    ice_servers: undefined
  }
});
  

В результате руководство работает нормально. Я вижу как видеопоток в браузере, так и журналы в файле журнала KMS.

Для учебного пособия по узлу Hello World я обновил server.js файл для включения:

 var argv = minimist(process.argv.slice(2), {
    default: {
      // as_uri: 'https://localhost:8443/',
      as_uri: 'https://<IP_Of_Application_Server>:8443/', // Application server on EC2
      // ws_uri: 'ws://localhost:8888/kurento'
        ws_uri: 'wss://<IP_Of_KMS_On_AWS>:8433/kurento', // Kurento server on AWS
    }
});
  

В руководстве по узлу основные элементы браузера работают нормально, однако приложению не удается установить успешное подключение к KMS. Я ничего не вижу в журналах KMS. Я вижу локальное видео, отображаемое в браузере, со счетчиком в элементе remote video. Аналогичный опыт у меня был с другими учебными пособиями по узлу Kurento, т. е. не выполняются вызовы к экземпляру KMS в AWS.

Я ожидаю, что на основе моей конфигурации руководство по узлу Hello World должно работать так же, как руководство по Javascript в браузере, и я должен видеть как видеопотоки в браузере, так и журналы, генерируемые на сервере Kurento.

Открытые вопросы: 1) Правильно ли выглядит моя конфигурация? 2) Я что-то упускаю в своей настройке?

Комментарии:

1. Привет, не могли бы вы, пожалуйста, проверить, правильно ли вы настроили порт KMS по умолчанию с 8888 на 8443.

2. @BuddhikaJayawardhana — Я считаю, что они настроены правильно. Если вы заметили, моя настройка работает нормально, когда я запускаю версию руководства для браузера Javascript. Вы хотите сказать, что node.js версия руководства использует разные порты в KMS?

Ответ №1:

Сегодня я столкнулся с той же проблемой. После настройки экземпляра ec2 с помощью Kurento я выполнил шаги, изложенные в руководстве по hello-world nodejs (изменен последний шаг, понятно почему):

 git clone https://github.com/Kurento/kurento-tutorial-node.git
cd kurento-tutorial-node/kurento-hello-world
git checkout 6.13.0
npm install
cd static
bower install --allow-root
cd ..
npm start -- --as_uri=https://0.0.0.0:8081/ npm start -- --ws_uri=ws://0.0.0.0:8888/kurento
  

Я видел то же поведение в браузере: я мог видеть, что отображается локальное потоковое видео, но не удаленный поток, но, в отличие от вас, я видел этот журнал в своем терминале ec2:

 /home/ubuntu/kurento-tutorial-node/kurento-hello-world/node_modules/express-session/index.js:142
    if (req.session) return next();
            ^

TypeError: Cannot read property 'session' of undefined
    at session (/home/ubuntu/kurento-tutorial-node/kurento-hello-world/node_modules/express-session/index.js:142:13)
    at WebSocketServer.<anonymous> (/home/ubuntu/kurento-tutorial-node/kurento-hello-world/server.js:90:5)
    at emitTwo (events.js:126:13)
    at WebSocketServer.emit (events.js:214:7)
    at handleUpgrade (/home/ubuntu/kurento-tutorial-node/kurento-hello-world/node_modules/ws/lib/websocket-server.js:90:18)
    at WebSocketServer.completeUpgrade (/home/ubuntu/kurento-tutorial-node/kurento-hello-world/node_modules/ws/lib/websocket-server.js:329:5)
    at WebSocketServer.handleUpgrade (/home/ubuntu/kurento-tutorial-node/kurento-hello-world/node_modules/ws/lib/websocket-server.js:245:10)
    at Server.upgrade (/home/ubuntu/kurento-tutorial-node/kurento-hello-world/node_modules/ws/lib/websocket-server.js:89:16)
    at emitThree (events.js:136:13)
    at Server.emit (events.js:217:7)
  

Я нашел этот поток, который помог мне с решением этой проблемы. Из потока:

проблема заключалась в том, что исходный код использовал старую версию ws, которая с момента написания кода удалила ws.upgradeReq

Я проверил страницу GitHub на наличие кода server.js и увидел, что if (req.session) return next(); часть была изменена. Я удалил проект / kurento-tutorial-node из моего ec2 и выполнил все шаги из руководства hello-world nodejs, НО БЕЗ git checkout 6.13.0 , чтобы получить новую версию кода. Итак, я сделал:

 git clone https://github.com/Kurento/kurento-tutorial-node.git
cd kurento-tutorial-node/kurento-hello-world
npm install
cd static
bower install --allow-root
cd ..
npm start -- --as_uri=https://0.0.0.0:8081/ npm start -- --ws_uri=ws://0.0.0.0:8888/kurento
  

и на этот раз это сработало

введите описание изображения здесь