流星,模数和安全的websockets

Cha*_*use 2 javascript websocket meteor sockjs modulus.io

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

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

到目前为止我做过/检查过的事情

  1. 升级所有内容:该应用程序一直在1.0.2.1(最新)运行,但最初是在~0.65天内创建的.作为第一项业务,我将标准app-packages升级到meteor-platform软件包并重新启动服务器.没变.
  2. 模数:检查...模数不需要任何显式命令来启用安全的websockets
  3. Meteor:Check ... 默认情况下启用Meteor 0.6.3.1 websockets.
  4. 出版物大小:我确信在我的出版物中我可能会更加节俭,但这些似乎总共大约1.4kb.
  5. 浏览器安全策略:合理地确定这是可以的(见下文)

相对新手在这里,所以任何关于下一步检查的想法或建议都非常感谢.

PS - 这里这里有类似的,未解答的问题

  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');
  }
Run Code Online (Sandbox Code Playgroud)

更新:
为了安全衡量,请将模数ROOT_URL更改为您的自定义域.因此https://myappname-12345.onmodulus.net变得https://example.com.

Bad*_*yon 8

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

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

免责声明:我是Modulus员工