流星,模数和安全的websockets

时间:2015-01-06 17:56:37

标签: javascript meteor websocket sockjs modulus.io

试图在流星中绕过websockets和xhr - >模数上下文。我有时会注意到很长的响应时间,显然是因为当无法连接时,websockets会回落到xhr ......我正在尝试诊断原因。

生产应用程序正在Modulus上托管。已启用SSL。

到目前为止我已完成/检查过的事情

  1. 升级所有内容:应用程序一直在1.0.2.1(最新)运行但最初创建 在~0.65天。作为第一个业务我升级了 标准应用程序包到流星平台包并重新启动 服务器。没有变化。
  2. 模数:检查...模数不需要任何显式命令来启用安全的websockets
  3. Meteor:Check ...从Meteor 0.6.3.1开始默认启用websockets。
  4. 出版物大小:我确信我的节奏可能会更加节俭 出版物,但这些出版物总共约为1.4kb。
  5. 浏览器安全策略:合理地确定这是可以的(见下文)
  6. 这里有相关的新手,所以对于接下来要检查什么的任何想法或建议都非常感谢。

    PS - 类似的,未回答的问题herehere

      BrowserPolicy.content.disallowConnect();
    
      //
      //Allow Meteor DDP Connections
      //
      var rootUrl = __meteor_runtime_config__.ROOT_URL;
      console.log('ROOT_URL: ' + rootUrl);
    
      //Allow DDP connections for local development
      if (rootUrl == 'http://localhost:3000/') {
        BrowserPolicy.content.allowConnectOrigin(rootUrl);
        BrowserPolicy.content.allowConnectOrigin(rootUrl.replace(/http(s?)/, 'ws$1'));
      }
    
      //Allow DDP connections for staging server currently using Meteor's free hosting
      if (rootUrl == 'http://staging.example.com') {
        BrowserPolicy.content.allowConnectOrigin('https://*.meteor.com');
        BrowserPolicy.content.allowConnectOrigin('wss://*.meteor.com');
      }
    
      //Allow DDP connections for Modulus
      if (rootUrl == 'https://myappname-12345.onmodulus.net') {
        BrowserPolicy.content.allowConnectOrigin('https://example.com');
        BrowserPolicy.content.allowConnectOrigin('wss://example.com');
      }
    

    更新
    为安全起见,请将模数ROOT_URL更改为自定义域。因此https://myappname-12345.onmodulus.net变为https://example.com

1 个答案:

答案 0 :(得分:8)

无论你做什么,你的用户中至少会有一小部分用户会回到XHR。到处都没有完全支持WebSockets,特别是在移动设备上。使用SSL可以获得更广泛的支持,但仍然无处不在。

只要WebSockets看起来对您有用,您就无法做其他事情。根据设计,XHR将具有非常长的响应时间。 XHR通过打开与服务器的长(~30s)连接来工作。如果服务器无话可说,它将关闭连接并再次执行。这允许服务器在该30s窗口中的任何时间立即响应。这些XHR民意调查显示响应时间很长,但完全正常。

免责声明:我是Modulus员工