【问题标题】:peerjs working on loaclhost but not on heroku?peerjs 在 loaclhost 上工作,但不在 heroku 上?
【发布时间】:2020-12-14 21:26:25
【问题描述】:

我在 3000 端口上运行我的节点服务器,在端口 3001 上运行对等服务器。在这种情况下,它工作正常。但是当部署在 heroku 上时,我在 3000 上运行我的服务器,在 443 上运行对等服务器。在这种情况下 peerjs不工作。我猜这可能是端口分配问题,但我无法找到问题。

peer.js

const myPeer = new Peer( {
secure:true,
host: 'my-app-name.herokuapp.com',
port: 443
})

server.js

const PORT = process.env.PORT || 3000;
server.listen(PORT, () => console.log(`Server running on port ${PORT}`));

项目的github链接:link

Heroku 新手。任何帮助将不胜感激!

【问题讨论】:

    标签: express heroku socket.io webrtc peerjs


    【解决方案1】:

    将此添加到您的服务器文件中:

    var ExpressPeerServer = require("peer").ExpressPeerServer;    
    var options = {
      debug: true,
      allow_discovery: true,
    };
    let peerServer = ExpressPeerServer(server, options);
    app.use("/peerjs", peerServer);
    

    并像这样在客户端调用:

    var peer = new Peer({
                    host: "yoursite.herokuapp.com",
                    port: "",
                    path: "/peerjs",
                  });
    

    【讨论】:

      【解决方案2】:

      您必须在 Heroku 上托管两个应用程序。首先是您的主应用程序,其次是您的 PeerJS 服务器。因为您不能在不同的端口(即https://your-app-name.herokuapp.com:5000)上托管您的应用程序。然后你可以使用这个连接你的主应用 PeerJS 客户端和你的 PeerJS 服务器。

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

      编码愉快!

      【讨论】:

        【解决方案3】:

        只需使用this Heroku Element 即可零配置部署您自己的对等服务器。从您的客户端连接到它,提供urlHeroku appurl 属性,没有https:// 部分,您可能还需要将secure 设置为true

            {
              host: "you_app_name.herokuapp.com", // exclude protocol
              secure: true
            }
        

        【讨论】:

          【解决方案4】:

          在 server(index,app) 文件中添加这个

          const { ExpressPeerServer } = require("peer")
          const peerServer = ExpressPeerServer(server, {
              debug: true
          })
          app.use("/peerjs", peerServer);
          

          在客户端添加这个

          const myPeer = new Peer(undefined, {
              path: "/peerjs",
              host: "/", 
              port: "443",
          })
          

          端口应该和你的 server.listen(port) 一样 这将为套接字 io 提供无效的帧头,但很好

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-02
            • 1970-01-01
            • 2021-01-01
            • 1970-01-01
            • 2021-04-26
            • 2013-03-29
            • 2015-02-07
            相关资源
            最近更新 更多