我有一个运行包含socket.io客户端的页面的WebView,该客户端连接到远程node.js服务器。问题在于,因为Android webview中不支持websockets(它们位于Android Chrome浏览器中),所以它会回退到xhr-polling。
onProgressChanged
有一个WebChromeClient
侦听器,但xhr-polling会继续加载页面。当我记录进度时,它达到~90-95%并且不再进一步。这意味着我无法关闭任何加载指示符或执行任何其他需要完全加载页面的操作。
无论如何我可以让Android认为xhr-polling
不是页面加载的一部分吗?或者有解决方法吗?我还没有用jsonp-polling
测试它。我更喜欢这个问题的解决方案,而不是黑客/解决方法,但最终我只想让我的应用程序工作。
P.S,我知道android上的socket.io和WebSockets的本机库。但是,这一切都需要在WebView中完成。
由于
答案 0 :(得分:1)
我发现了问题!
在socket.io-client上显然有一个特别的推迟,如果它是XHR + webkit浏览器在这里:
https://github.com/LearnBoost/socket.io-client/blob/0.9/lib/util.js#L203
正如你所看到的,100毫秒对于手机来说还不够,我不得不改变它至少500毫秒!我认为作者不记得这个用例!用这个和利润来修补socket.io-client:)
答案 1 :(得分:0)
在我发现更好的解决方案之前,我正在使用一种解决方法。我注意到,每次进展都会达到至少90%。所以,我不是等待100%,而是等待90%。即使是90%,我也可以看到几乎所有页面都已加载,90%后页面没有视觉上的变化。