Kurento节点Hello World教程未连接到AWS上的Kurento Server

时间:2019-04-05 20:48:15

标签: kurento

运行kurento_hello_world Nodejs教程时,Kurento客户端无法与运行在AWS上的我的Kurento Media Server连接。 但是,相应的Browser Javascript教程在完全相同的设置下也可以正常运行

我的设置包括在EC2实例上运行的Kurento Media Server。它是使用服务器的公共CloudFormation配置安装的。我已经正确配置了证书,并确保我的浏览器信任它们。

我已经从单独的EC2实例安装并运行了教程。我使用的是6.10.0版的教程(但是,在6.9.0版中我会遇到相同的情况)。

我正在使用Chrome浏览器进行测试。

对于“浏览器JavaScript Hello World”教程,我更新了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日志文件中登录。

对于Node 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
    }
});

在Node教程中,基本的浏览器元素可以正常工作,但是该应用程序无法成功连接到KMS。我在KMS日志中看不到任何内容。我看到在浏览器中显示的本地视频,在远程视频元素中有一个微调器。这与我在其他Node Kurento教程中所经历的类似,即,没有在AWS上对KMS实例进行任何调用。

我希望根据我的配置,“ Hello World Node”教程应与“浏览器Javascript”教程相同,并且应该同时看到浏览器中的视频流和Kurento服务器上生成的日志。

悬而未决的问题: 1)我的配置看起来正确吗? 2)我在设置中缺少什么吗?

1 个答案:

答案 0 :(得分:0)

我今天遇到了同样的问题。在使用Kurento设置ec2实例后,我按照hello-world nodejs tutorial中列出的步骤进行操作(更改为最后一步,see why):

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)

我发现this thread帮助我解决了这个问题。在线程中:

问题在于源使用的是旧版本的ws, 因为编写代码已删除了ws.upgradeReq

我检查了GitHub page的server.js代码,发现if (req.session) return next();部分被更改了。我从ec2中删除了/ kurento-tutorial-node项目,并采取了hello-world nodejs教程BUT WITHOUT 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

这一次奏效了

enter image description here