我正在尝试在我的工作场所的内部网络上实现一个简单的2对等视频聊天。 我编写了客户端代码,它可以工作:如果我使用peerjs API密钥连接到peerjs,则连接正确建立。但是存在一个问题:视频流速度非常慢(有时完全冻结)。我想这是因为我连接的免费peerjs服务器太弱了,所以我想尝试自己托管它。
我已经尝试了所有的方法,并深深地寻求帮助,但无法克服它。我已经尝试将它与express结合使用,或者只是创建一个PeerServer,按照我在https://github.com/peers/peerjs-server上找到的说明进行操作。我试过一个简单的'npm install peer'然后'peerjs --port 9000'。我试过heroku。我已经尝试了所有可以找到的代码的端口,路径和代码片段的组合,但没办法。此外,我很高兴能够了解很多关于同伴的事情,但仍然没有运气。
成功运行peerjs服务器的人能解释我错在哪里吗?
这是我的客户端最小代码(注释行是我试过但没有成功的行):
var name = prompt('What's your name?');
var peer = new Peer(name, {
host: 'https://videodesk-ennesimo.herokuapp.com/',
port: 9000,
//key: 'peerjs',
//path: '/peerjs',
//secure: true
});
peer.on('open', function(name){
alert(name + ' connected');
});
一切正常
var peer = new Peer(name, { key: 'mypeerjsfreeapikey' });
但如前所述,它几乎被冻结了。 您可以检查我的对等服务器是否正在https://videodesk-ennesimo.herokuapp.com/
运行我做过的其他尝试都是例如:
var express = require('express');
var app = express();
var ExpressPeerServer = require('peer').ExpressPeerServer;
var options = {
debug: true,
allow_discovery: true
}
var server = require('http').createServer(app);
app.use('/peerjs', ExpressPeerServer(server, options));
server.listen(9000, 'localhost');
随后修改客户端代码。
我必须强调我的客户端是使用express制作的node.js应用程序,并且我使用的是自签名SSL证书,因为Google Chrome不允许在不安全的连接上使用网络摄像头。
任何帮助都会有用。自上周以来我一直坚持这一点,我不能浪费任何时间。我也不知道该怎么办了。 同时,peerjs的替代工作也很有用。
非常感谢!
答案 0 :(得分:1)
卡罗
首先,欢迎使用Stack Overflow。
只有在设置连接时才需要Peerjs,并且它在后续的视频通话中没有任何作用,所以你断言它是一个弱服务器是不对的。
如果需要连接两台计算机,则面临的挑战是如何连接它们。这就是peerjs所做的,它会查看可行的ip地址/端口组合。通常它存在于云中,因此它允许防火墙后面的机器连接,通常无法相互连接。
如果您在局域网上进行连接,则可以在局域网上运行peerjs服务器,它可以正常运行。但这不是你的问题,有些东西会导致视频性能问题,也许会以某种方式限制流量。
尝试将两台计算机放在同一路由器上,甚至为它们创建专用网络。这将说服你,peerjs不是问题所在。然后你可以解决为什么你的视频性能不佳的问题。
答案 1 :(得分:0)
聚会晚了一点,但是您的代码不起作用,因为heroku自动分配的端口是443,并且主机地址的末尾有一个反斜杠。
这是我连接到您的peerjs服务器的方式。
var peer = new Peer({secure: true, host: 'videodesk-ennesimo.herokuapp.com', port: 443, path: '/'});
仍在尝试让我自己的服务器正常工作。
答案 2 :(得分:0)
主要问题在于您的客户端代码,您编写了...
主持人:'https://videodesk-ennesimo.herokuapp.com/',
但在主机的情况下,你要么写
host: 'localhost' 或 'your-app-name.herokuapp.com' 没有任何 https 或末尾的反斜杠。
你的正确代码应该是
var name = prompt('What's your name?');
var peer = new Peer(name, {
host: 'videodesk-ennesimo.herokuapp.com',
port: 9000,
secure: true
});
peer.on('open', function(name){
alert(name + ' connected');
});
这对我有用!祝你好运,编码愉快。