三星Galaxy S3 Android浏览器上的Web Sockets?

8
因为三星Galaxy S3的原生Android浏览器不支持WebSockets,所以我们做的使用了WebSockets的Web应用程序无法在该浏览器上运行。奇怪的是,Android浏览器本来就不应该支持WebSockets,但看起来这个浏览器支持,尽管WebSockets不工作,连接需要很长时间才能成功。 我们的Web应用程序对于Android浏览器有一个备选方案,使用Flash WebSockets实现,以防用户已安装Flash,但由于它检测到S3支持WebSockets,所以不使用备选方案。 有人遇到过同样的问题吗?有人知道S3浏览器实现了哪个版本的WebSockets吗?(即使WebSocket.org回声测试也失败了)

如果有一个答案适合您,您应该接受它,或者评论一下缺少什么。 - kelunik
3个回答

1
似乎安卓的默认浏览器实现了WebSocket API,但没有任何作用。然而(至少在我的S2+上),WebSocket中没有CLOSING属性,因此您可以使用以下函数来检测是否实际支持WebSockets:
websocketSupported = function() {
    if(typeof WebSocket === 'undefined') {
        return false;
    }

    return 'CLOSING' in WebSocket.prototype;
} ();

1

我和你一样,也遇到了SGS 3的同样问题,并且我们使用了Flash回退。问题在于,当您调用window.WebSocket时,其他Android设备会返回undefined,但SGS3不会。因此,我们通过使用window.WebSocket = undefined;解决了这个问题。因此,我们的Flash回退开始工作。


0

然而,我回答这个问题已经很晚了。但是我仍然想分享一下,目前没有任何ANDROID浏览器支持WebSockets。请参考this

我还使用SignalR制作了一个基本的PhoneGap应用程序,尝试在不同的ANDROID版本上进行数据推送,并发现它在SAMSUNG ACE DUOS、MICROMAX A116和一个非常旧的SAMSUNG型号(抱歉,我记不得型号)上运行良好,但在SAMSUNG GALAXY S3上失败了。


问题在于,尽管 Android 4.4 之前的 Android 浏览器没有官方 Websocket 支持,但三星显然在其某些 Android 设备上修补了浏览器以支持 Websockets。不幸的是,实现似乎存在问题。 - bjunix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接