Kurento节点Hello World教程无法连接到AWS上的Kurento服务器。

问题描述 投票:1回答:1

当运行kurento_hello_world Nodejs教程时,Kurento客户端无法与我在AWS上运行的Kurento媒体服务器连接。 然而,在设置完全相同的情况下,相应的浏览器Javascript教程却能正常运行。.

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

我已经安装了教程,并从一个单独的EC2实例中运行。 我正在使用教程的 6.10.0 版本(但是,我在使用 6.9.0 时也遇到了同样的问题)。

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

对于浏览器JavaScript Hello World教程,我更新了jsindex.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)我的设置是否遗漏了什么?

kurento
1个回答
0
投票

我今天也遇到了同样的问题。在用Kurento设置了ec2实例后,我按照以下步骤进行了操作。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)

我在ec2终端上看到了这个日志 这条 帮助我解决了这个问题。从这个线程来看。

问题出在源码使用的是旧版本的ws,自从写了这段代码后,它已经删除了ws.upgradeReq。

我查过了 GitHub页面 服务器.js的代码,看到了 if (req.session) return next(); 的部分被修改了。我从 ec2 中删除了 kurento-tutorial-node 项目,并执行了 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

这次成功了

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.