GET https://127.0.0.1:9000/peerjs/peerjs/id?ts=14993271469660.591159722513086 net :: ERR_CONNECTION_REFUSED

我使用javascript的webRTC库peerjs创build了一个简单的video聊天应用程序。 而现在我正试图在zeit.co上部署该网站。 但是,我得到一个peerjs实例创build时的错误下面是我提到的端口和主机运行服务器的代码

服务器端代码

const express = require('express') const app = express() const path = require('path') const server = require('http').createServer(app) const io = require('socket.io').listen(server) const srv = server.listen(3000) app.use('/peerjs', require('peer').ExpressPeerServer(srv, { debug: true })) const users = [] const connections = [] server.listen(3000, () => { console.log('server running') }) app.use(express.static(path.join(__dirname, 'public'))) app.get('/', (req, res) => { }) 

客户端代码

 const peerObj = { host: '127.0.0.1', path: '/peerjs', debug: 3, config: {icerServers: [ { url: 'stun:stun1.l.google.com:19302' }, { url: 'turn:numb.viagenie.ca', credential: 'muazkh', username: 'webrtc@live.com' } ]} } peer = new Peer(peerObj) 
  • 项目清单

我find了我的问题的解决scheme。 实际上对等服务器在http上运行,为了使它在https上运行,我们必须生成一个ssl密钥和证书。 即使在生成密钥和证书后,它也只能在本地主机和连接到该networking的系统上运行。

有一个托pipe在heroku上的对等服务器,所以它运行在https上,而不是运行你自己的对等服务器,我们可以提到heroku对等服务器的path,然后托pipe在一些托pipe网站的应用程序,该应用程序将正常运行。 以下是我的新客户端代码

 peer = new Peer({host:'peerjs-server.herokuapp.com', secure:true, port:443}) 

这将正确运行应用程序。

PeerJS的默认端口是9000,这也是错误提示:它试图连接到127.0.0.1端口9000,但是您的服务器在端口3000上运行。

尝试显式添加端口号:

 const peerObj = { host : '127.0.0.1', port : 3000, ... } 

您可能还需要设置secure : false ,因为您的服务器不支持TLS。