websockets连接确实超时

时间:2016-06-09 08:53:48

标签: node.js azure websocket node-red iisnode

我在Azure WebApp上遇到了websockets的问题。

我从github克隆了Node-red并将其发布到Azure中的全新WebApp(使用VisualStudioOnline)。比我安装所有包并使用grunt构建解决方案。 (如here所述)

之后我更改了settings.js并配置了azure来支持websockets。 (如here所述)。

但是websockets仍然不起作用: Chrome确实显示以下错误:

  

连接建立错误:net :: ERR_CONNECTION_TIMED_OUT

我在服务器端看不到任何指示问题的日志/警告。

2 个答案:

答案 0 :(得分:1)

问题源于我们的代理。 Here是描述问题的帖子。

  

如果使用未加密的WebSocket连接(ws://),则在透明代理服务器的情况下,浏览器不知道代理服务器,因此不会发送HTTP CONNECT。因此,今天的连接几乎可能失败。

     

如果使用加密的WebSocket安全连接(wss://),则在透明代理服务器的情况下,浏览器不知道代理服务器,因此不会发送HTTP CONNECT。但是,由于线路流量是加密的,因此中间透明代理服务器可能只允许加密流量通过,因此如果使用加密的WebSocket连接,WebSocket连接将有更好的机会成功。

因此我只是使用以下重写规则(web.config)强制重定向到HTTPS站点

<rule name="https redirect" stopProcessing="true">
   <match url="(.*)" />
   <conditions>
       <add input="{HTTPS}" pattern="off" ignoreCase="true" />
   </conditions>
   <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>

并且一切都按预期工作。

答案 1 :(得分:0)

请注意以下几点,并在您的应用程序中进行修改,然后重试。

  1. 首先尝试通过https://github.com/node-red/node-red#developers在本地运行node-red应用程序。特别是运行命令grunt build来完成您的应用程序。
  2. 尝试删除忽略文件夹

    coverage
    credentials.json
    flows*.json
    nodes/node-red-nodes/
    node_modules
    public
    locales/zz-ZZ
    nodes/core/locales/zz-ZZ
    

    .gitignore中,然后在Azure上部署妓女已完成的项目。

  3. 修改uiPort: process.env.PORT || 1880,文件中的settings.js

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