尝试在 Meteor -> Modulus 上下文中了解 websockets 和 xhr。我有时注意到响应时间过长,这显然是由于 websockets 在无法连接时回退到 xhr...我正在尝试诊断原因。
生产应用程序托管在 Modulus 上。 SSL 已启用。
到目前为止我已经做过/检查过的事情
- 升级所有内容:该应用程序一直在 1.0.2.1(最新)运行,但最初是创建的
在~0.65天内。作为首要任务,我升级了
standard-app-packages 到meteor-platform 包并重新启动
服务器。不用找了。
- Modulus:检查...Modulus 不需要任何显式命令即可启用安全 Websocket
- Meteor:检查...截至流星0.6.3.1 https://stackoverflow.com/questions/11783729/why-are-websockets-disabled-in-the-browser默认情况下启用 websocket。
- 出版物大小:我确信我可以在我的
出版物,但这些似乎总共约为 1.4kb。
- 浏览器安全策略:合理确定这是可以的(见下文)
这里相对新手,因此非常感谢有关下一步检查内容的任何想法或建议。
PS - 类似的、未回答的问题here https://stackoverflow.com/questions/22447298/how-to-solve-the-meteor-js-websoket-interrupted-while-the-page-was-loading and here https://stackoverflow.com/questions/27296424/websockets-in-meteor-fails
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');
}
UPDATE:
为了安全起见,请将 Modulus ROOT_URL 更改为您的自定义域。所以https://myappname-12345.onmodulus.net
变成https://example.com
.
无论您做什么,至少一小部分用户可能会回退到 XHR。 WebSocket 仍然没有在所有地方得到完全支持,尤其是在移动设备上。使用 SSL 可以获得更广泛的支持,但仍然不普遍。
只要 WebSocket 看起来对您有用,您就无能为力。根据设计,XHR 的响应时间会很长。 XHR 的工作原理是打开与服务器的长(约 30 秒)连接。如果服务器没有什么可说的,它将关闭连接并再次执行。这使得服务器可以在 30 秒的窗口内随时立即响应。这些 XHR 民意调查显示响应时间很长,但完全正常。
免责声明:我是 Modulus 员工
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)