【问题标题】:PeerJS Server 404 on AzureAzure 上的 PeerJS 服务器 404
【发布时间】:2018-01-10 01:59:16
【问题描述】:

我正在尝试在 Azure 上部署 PeerJS 服务器。在我的 kudu 控制台上,运行

node peerjs --port 9000

返回

Started PeerServer on ::, port: 9000, path: / (v. 0.2.8)

但是,当我尝试从客户端代码连接到服务器时,我收到 404。在我的浏览器中直接访问 appname.azurewebsites.net/peerjs/id 也会返回 404。

我在他们的 package.json 文件中看到,他们运行

bin/peerjs --port ${PORT:=9000}

而不是直接传入9000;我假设这是一个环境变量。但是,尝试在 Azure 上运行它会给出

Error: Error: listen EACCES ${PORT:=9000}

我认为这意味着 Azure 不会将 ${PORT:=9000} 识别为有效端口。

我知道我的客户端代码没有任何问题,因为 a) 我直接从 PeerJS 的网站复制了它,并且 b) 当我将 PeerJS 部署到 Heroku 时一切正常。它只是不在 Azure 上运行。

我尝试过的其他事情:我在 bin 文件夹中编辑 peerjs 以使用 process.env.PORT 而不是通过命令行传入的内容,但这不起作用,给出了相同的 EACCES 错误。当我尝试 console.log(process.env.PORT) 时,我没有定义。我的 Google 搜索都没有找到任何解决方案,尽管这个人 (Custom PeerJs Server giving ERR_CONNECTION_TIMED_OUT) 似乎有类似的错误,而不是在 Azure 上。

【问题讨论】:

  • 这将是防火墙问题...您需要在 Azure 设置面板中打开端口 9000

标签: node.js azure peerjs


【解决方案1】:
  1. Azure 应用服务不允许我们侦听客户端口。我们需要改用process.env.PORT。见Listen additional port Microsoft Azure Nodejs

  2. Azure 应用服务(在 Windows 平台上)在 Microsoft IIS 上运行。所以我们需要将应用文件放到它的虚拟目录(D:\home\site\wwwroot),不再需要通过 Kudu 控制台手动运行应用。

在这种情况下,您首先需要将库安装在应用的根目录下:

npm install peer 

然后创建一个名为index.jsapp.js的文件,内容如下,放到/wwwroot文件夹中:

var PeerServer = require('peer').PeerServer;
var server = PeerServer({port: process.env.PORT, path: '/'});

正如@Mikkel 在评论中提到的,PeerServer 使用 WebSocket 协议,因此应该在 Azure 门户中启用 Web Sockets,如下所示:

如果您的应用尚未创建,您还需要查看this post 为您的应用添加web.config 文件。

【讨论】:

  • 我不确定这是否会起作用,因为 PeerJS 还与客户端打开了一个套接字(以及响应 http 请求)
  • 你是说 WebSocket 吗?如果是这样,您需要通过 Azure 门户启用它,例如 this。如果您的应用尚未创建,您还需要检查this post 为您的应用添加web.config 文件。
  • 当我这样做时它可以工作,但由于某种原因,早些时候,当我尝试 console.log(process.env.PORT) 时,我没有定义。为什么会这样?
  • @AaronChen 我很高兴还有一种方法可以启用网络套接字 - 也许您可以更新您的答案以使其更完整。
【解决方案2】:

这将是防火墙问题...您需要在 Azure 设置面板中打开端口 9000。

从机器本身打开浏览器到http://localhost:9000/http://localhost:9000/peerjs,您应该会看到标准的Peerjs 服务器JSON 输出。

或者如果你只有命令行,试试curl http://localhost:9000/http://localhost:9000/peerjs

【讨论】:

猜你喜欢
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 2023-02-05
相关资源
最近更新 更多