运行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)我在设置中缺少什么吗?
答案 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
这一次奏效了