peerjs 在 loaclhost 上工作,但不在 heroku 上?

Posted

技术标签:

【中文标题】peerjs 在 loaclhost 上工作,但不在 heroku 上?【英文标题】:peerjs working on loaclhost but not on 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 新手。任何帮助将不胜感激!

【问题讨论】:

【参考方案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 提供无效的帧头,但很好

【讨论】:

以上是关于peerjs 在 loaclhost 上工作,但不在 heroku 上?的主要内容,如果未能解决你的问题,请参考以下文章

托管和部署 peerjs 服务器

如何从外部主机连接到 peerjs 服务器

在 PeerJs 正在进行的实时连接(流)期间请求视频

phpstudy之访问loaclhost显示目录

将 peerjs 与 nuxtjs (vue.js) 集成时出错

在 React Native 中使用 Peerjs 进行多个视频通话(n 个用户)