试图在流星中绕过websockets和xhr - >模数上下文。我有时会注意到很长的响应时间,显然是因为当无法连接时,websockets会回落到xhr ......我正在尝试诊断原因。
生产应用程序正在Modulus上托管。已启用SSL。
到目前为止我已完成/检查过的事情
这里有相关的新手,所以对于接下来要检查什么的任何想法或建议都非常感谢。
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
。
答案 0 :(得分:8)
无论你做什么,你的用户中至少会有一小部分用户会回到XHR。到处都没有完全支持WebSockets,特别是在移动设备上。使用SSL可以获得更广泛的支持,但仍然无处不在。
只要WebSockets看起来对您有用,您就无法做其他事情。根据设计,XHR将具有非常长的响应时间。 XHR通过打开与服务器的长(~30s)连接来工作。如果服务器无话可说,它将关闭连接并再次执行。这允许服务器在该30s窗口中的任何时间立即响应。这些XHR民意调查显示响应时间很长,但完全正常。
免责声明:我是Modulus员工