三星平板电脑上的Meteor本地存储不工作

三星平板电脑上的Meteor本地存储不工作,meteor,Meteor,我有一款搭载安卓4.2的平板电脑SM-T211,当我将我的应用程序部署到meteor.com时,它在我桌面上的Chrome浏览器中运行良好,但在平板电脑上,我所有的收藏都是空的。我需要在平板电脑上使用一些设置来实现这一点吗 编辑: 好的,更多的测试揭示了更奇怪的东西: -使用Chrome我的测试应用程序使用我的本地服务器和meteor.com工作 -使用内置浏览器,它可以使用我的本地服务器工作,但使用meteor.com失败,出现Websockets错误 代码如下: meteor网站是lstes

我有一款搭载安卓4.2的平板电脑SM-T211,当我将我的应用程序部署到meteor.com时,它在我桌面上的Chrome浏览器中运行良好,但在平板电脑上,我所有的收藏都是空的。我需要在平板电脑上使用一些设置来实现这一点吗

编辑: 好的,更多的测试揭示了更奇怪的东西: -使用Chrome我的测试应用程序使用我的本地服务器和meteor.com工作 -使用内置浏览器,它可以使用我的本地服务器工作,但使用meteor.com失败,出现Websockets错误

代码如下:
meteor网站是lstest.meteor.com

不确定发生了什么,但这可能是由于WebSocket的支持

  • 卡努斯州
  • 内置浏览器/网络视图是,这应该解释第一点
其他可能性(有些可能很疯狂):

  • 防火墙。不确定它如何识别你的设备,但值得一试

  • 它也可能是您拥有的软件包的版本。尝试更新所有版本,或检查其最近的版本是否存在问题。我曾经使用IronRouter,由于API的更改,一次更新破坏了我的代码

  • 可能是您的浏览器正在使用某个文件的旧版本。在进行开发时禁用缓存,或者至少清除缓存。更好的是,在私人/隐姓埋名模式下发展

  • 检查服务器上的流星。他们可能使用比他们发布的版本更旧、更稳定的版本。这解决了(但在Nginx上)的这个问题。确保服务器和本地版本匹配

  • 您的设备可能处于“数据封顶模式”。内置应用程序通常尊重设备设置,而第三方设备有时不尊重设备设置(特别是亮度、旋转等),这可以解释当内置浏览器无法通过时,Chrome是如何通过的。确保禁用任何限制器,如节能、数据封顶、智能wi-fi等

  • 我注意到WebSocket有不同的协议,CanIUse网站提到了不安全的、较旧的协议。这可能是因为内置浏览器使用的是较旧的协议,该协议不会提示XHR回退,但服务器会拒绝。狂野,但有预感


    • 您的ISP可能正在使用一个代理,该代理与我的ISP一样禁止WebSocket。虽然您确实看到了这个错误,但它只是意味着客户机退回到XHR。特别是当你使用某种3G/LTE/无线连接时

      这可能就是为什么它可以在本地工作,但不能在meteor部署主机上工作

      这不是一个真正的问题,要回到XHR,客户机需要知道websocket已经失败

      若您尝试使用(带有https://),则可以避免此问题(因为SSL不能被代理更改)


      如果您愿意,您可以添加
      强制ssl
      包,使每个人都使用ssl并避免此问题-如果https://有效。

      我尝试了上述所有建议(谢谢),但没有任何乐趣。今天注意到meteor 7.1已经发布,我将我的项目从7.0升级到了7.1,现在它正在工作


      在7.0版本中,默认的Android浏览器肯定有点奇怪,我确认集合在两个不同的设备、3个不同的网络(wifi和3G)以及两个不同的meteor.com网站上都不起作用。

      你能检查一下平板电脑的JavaScript控制台有无错误吗?要做到这一点,需要更多的设置。首先要明确的是,第一种调试方法是针对内置Android浏览器,而第二种方法是针对Android的Chrome。感谢Cuberto,我现在看到设备上的Chrome工作正常,是内置浏览器出了问题。一旦我的页面加载,我会在顶部得到一个“JavaScript控制台”的链接,当我打开该链接时,一切正常,直到我的页面加载,然后我看到很多错误“在建立连接之前关闭Websocket”让我更好地解释步骤:页面加载,我看到doc.ready很好,“我的模板处理程序”中的警报表示我的集合中没有记录,“我获取模板”。呈现“确定”,我的页面看起来很好,但没有填充任何数据字段。只是在所有这些之后,我才开始得到Websocket错误(大约每10秒1个),顺便说一下,这一切听起来都很正常。在没有路由的情况下,Meteor通常会在接收DDP更新以填充minimongo数据库之前渲染身体。不正常的是,一旦发现WebSockets不可用,SockJS就应该退回到备份实现。SockJS不应该模拟WebSockets吗?它应该仍然可以在不支持WebSocket的环境中工作。@Joseph梦想家,它会回到XHR。通常在手机上WebSocket也不总是有效的,一些大型运营商使用bytemobile,这不支持WebSocket。@Akshat,你知道应用程序捆绑包是否通过SockJS发送到客户端吗?@Cuberto捆绑包是通过单独的js文件设置的,css通常在html文件中内联。sockjs位在完全接收捆绑包后连接。websockets错误听起来像是ISP正在使用bytemobile。在使用httpsThanks@Akshat时,它可能会消失,我不知道我上面的评论是否被隐藏了,但是:我的桌面(工作正常)和移动设备使用相同的Wi-Fi连接,因此两者的ISP是相同的。我已经将问题缩小到内置浏览器和meteor.com主机的结合。其他使用安卓设备的人能否验证上面的测试站点是否只支持Chrome?我尝试过使用https,得到了相同的结果,但实际上我仍然存在这个问题-我不确定我认为它在meteor 7.1.1上是如何工作的,但我已经升级到7.1.2,而且当使用远程托管站点时,这些集合仍然不能与默认浏览器一起工作。