【问题标题】:Host Node.js Socket.io as Azure app将 Node.js Socket.io 托管为 Azure 应用程序
【发布时间】:2016-11-30 08:51:54
【问题描述】:

我使用 Visual Studio 创建 Node.js Socket.io 应用程序。它在本地运行良好。 当我将其作为 Azure 应用发布时出现错误:

“由于发生内部服务器错误,页面无法显示。”

有谁知道问题出在哪里,我正在考虑端口 80,它仅对 Azure 应用程序开放(+ 443)。

我尝试监听 80 端口,但又出现同样的错误。

【问题讨论】:

  • 当我在 Azure 上托管 socket.io 应用程序时,我不得不使用专门用于“Node.JS 应用程序”的 Azure 应用程序
  • 你是从 Azure 仪表板创建的,而不是 Visual Studio 在发布时默认创建的吗?
  • 是的,我从 Azure 仪表板创建了 Node.js 应用程序,然后如果我没记错的话,使用了我放入 VS 的特定 GIT 部署 URL
  • 您能告诉我模板名称吗?谢谢!
  • 在 Azure 中创建“新建”项时有一个选项:Node JS Empty Web App。也可以在这里查看:github.com/Azure/azure-content/blob/master/articles/…我使用 GIT url 从 VS 部署

标签: node.js azure socket.io azure-web-app-service


【解决方案1】:

要在 Azure Web Apps 上构建 socket.io 应用程序,您应该注意以下几点:

  • Node.js 服务器监听port should be set similar toprocess.env.PORT || 3000`

  • 验证 web.config 设置,确认<webSocket enabled="false"/> 禁用 IIS WebSockets 模块,该模块包括自己的 WebSockets 实现,并与 Node.js 特定的 WebSocket 模块如 Socket.IO 冲突。

详情请咨询https://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-chat-app-socketio/

如有任何疑问,请随时告诉我。

【讨论】:

  • Liu ,我需要创建一个名为 web.config 的文件,并且需要添加 <webSocket enabled="false"/> 来禁用 IIS?我的应用使用轮询而不是 WebSockets,请帮助我...
【解决方案2】:

Azure 应用服务使用 IISNodenode.exe 进程通信。这发生在命名管道上。 将您的应用程序配置为使用命名管道而不是套接字。

替换

app.set('port', 3000);

通过

app.set('port', process.env.PORT || 3000);

在 Portal 中启用 WebSockets,重新启动 Web 应用程序,您应该可以正常运行了。

[ Gary Liu 是对的,不需要那个设置。但是,使用应用服务上的示例 Socket.IO 聊天实现,Socket.IO 似乎并不关心我如何在门户中设置“WebSockets”。无论哪种方式都有效。 ]

由于 Internal Server Error 是计算等价于 There is a fault in the observable Universe,您还应该为您的 Node 应用程序启用日志记录,至少在开发阶段是这样:
来自https://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-debug/

要启用开发人员错误,请将以下行添加到 IISNode.yml 文件:

devErrorsEnabled: true

启用此选项后,IISNode 将返回发送到 stderr 的最后 64K 信息,而不是“发生内部服务器错误”等友好错误。

有关 iisnode 的更多信息:http://www.jokecamp.com/blog/getting-started-with-iisnode/
更多关于命名管道:What are named pipes?

【讨论】:

  • 谢谢!我的 Azure 应用现已上线。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2016-11-29
  • 2014-07-28
相关资源
最近更新 更多