【问题标题】:GET https://127.0.0.1:9000/peerjs/peerjs/id?ts=14993271469660.591159722513086 net::ERR_CONNECTION_REFUSED获取 https://127.0.0.1:9000/peerjs/peerjs/id?ts=14993271469660.591159722513086 net::ERR_CONNECTION_REFUSED
【发布时间】:2017-07-06 08:11:02
【问题描述】:

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

服务器端代码

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)
  • 列表项

【问题讨论】:

    标签: node.js peerjs


    【解决方案1】:

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

    在heroku上托管了一个peer server,所以它运行在https上,而不是运行你自己的peer server,我们可以提到heroku peer server的路径,然后将应用程序托管在某个托管网站上,该应用程序将正常运行。下面是我的新客户端代码

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

    这将正确运行应用程序。

    【讨论】:

    • 我的应用仍然可以在本地运行。它显示连接已建立,但看不到他们的流。
    【解决方案2】:

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

    尝试显式添加端口号:

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

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

    【讨论】:

    • 之前我已经明确提到了那个端口,它在 GET 127.0.0.1:3000/peerjs/peerjs/… net::ERR_CONNECTION_REFUSED 下面给了我一个错误
    • 我在 zeit.co 上托管了该网站,这是一个免费的网站托管网站,用于提供安全连接 (https)。我认为 peerjs 服务器不在 zeit 上工作。你有什么建议吗?
    • 尝试将 '127.0.0.1'host 选项替换为您的 Zeit 服务器的外部 IP 地址。
    • 这没有帮助
    • 是的,一样
    【解决方案3】:

    您好,如果您不想像 Aish 所说的那样依赖 herokuapp

    你可以在终端上运行:

    npm install peer
    

    然后你的 server.js 你添加:`

     //Peer server
        var privateKey  = fs.readFileSync('sslcert/server.key', 'utf8');
        var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');
    
      const { PeerServer } = require('peer');
      const peerServer = PeerServer({ port: 443, 
                                    path: '/' ,
                                    ssl: {
                                        key: privateKey,
                                        cert: certificate
                                      }
                                
                                });
    

    ` HTTPS 需要私钥和证书。确保将它们放在获取它们的路径上。 确保在客户端(在 index.html 上运行脚本)你有:

    myPeer = new Peer({host:'/', 
                      secure:true,
                       port:443,
                    path: '/'})
    

    【讨论】:

    • 您是否使用 apache 反向代理进行此设置?
    • 抱歉,Zahra,我不知道这是什么,但我的设置不需要它
    • 感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多