1

我有一个 WebView 运行一个页面,该页面包含一个连接到远程 node.js 服务器的 socket.io 客户端。问题在于,因为 Android webview 不支持 websockets(它们在 Android Chrome 浏览器中),所以它回退到 xhr-polling。

我有一个onProgressChanged监听器WebChromeClient,但是 xhr-polling 使页面不断加载。当我记录进度时,它达到了 ~90-95% 并且没有进一步的进展。这意味着我不能关闭任何加载指示器或执行任何其他需要页面完全加载的操作。

无论如何我可以让Android认为这xhr-polling不是页面加载的一部分吗?或者有解决方法吗?我还没有测试它jsonp-polling。我更喜欢这个问题的解决方案,而不是破解/解决方法,但最终我只想让我的应用程序正常工作。

PS,我知道 android 上的 socket.io 和 WebSockets 的本机库。但是,这一切都需要在 WebView 中完成。

谢谢

4

2 回答 2

1

我发现了问题!

在 socket.io-client 上,如果这里是 XHR + webkit 浏览器,显然有一个特殊的延迟:

https://github.com/LearnBoost/socket.io-client/blob/0.9/lib/util.js#L203

可以看到,100ms对手机来说是不够的,我得换至少500ms!我想作者不记得这个用例了!用这个修补socket.io-client并获利:)

于 2013-03-22T16:42:22.767 回答
0

在我找到更好的解决方案之前,我正在使用一种解决方法。我注意到每次,进度都会达到至少 90%。所以,我不是等待 100%,而是等待 90%。即使在 90% 时,我也可以看到我的几乎所有页面都已加载,在 90% 之后页面没有任何视觉变化。

于 2013-01-11T11:13:43.987 回答