Android浏览器中的假websocket功能

Posted

技术标签:

【中文标题】Android浏览器中的假websocket功能【英文标题】:Fake websocket function in Android browser 【发布时间】:2014-03-18 14:38:00 【问题描述】:

我想在浏览器中运行 websocket 来连接服务器,或者在 ws 不可用时使用 flash(就像 websocket.js 所做的那样) 但似乎在 android 浏览器(不是 chrome)中有一个本机 WebSocket 函数,该函数具有成员函数,如关闭、发送等,但它不起作用。尝试使用本机 ws 连接到服务器时,我无法在路由器上捕获任何 ws 包。 所以,

    为什么会有假的ws函数......

    我会尝试检查此对象的 binaryType,当 binaryType 未定义或“”时,我认为它不是一个好的 ws(包括 ws 版本 7-8,服务器仅支持 ws 版本 13)。这是准确的吗?还是更好? UserAgent可能不是一个好主意,因为android上有很多自定义浏览器(比如firefox、dolphin、...),并且没有一个好的关键字来检查UA

    android浏览器的假ws功能什么时候或者哪个版本会消失或者变成真的?虽然 google 推荐 chrome,但有些手机似乎在运行默认浏览器,并带有一个类似地球图标的 chrome。

非常感谢!

【问题讨论】:

【参考方案1】:

Google 似乎开始着手在 Android 浏览器中实现 WebSocket,但只到了 API。

虚假 API 存在于所有较新版本的 Android 浏览器中,与供应商无关。这仅在 Android 4.4 中发生变化,其中 Android 浏览器已被 Chrome 取代。

我不建议通过用户代理或类似的方式检测这一点,而是通过假 WS 对象的行为来检测。

例如打开试用 WebSocket 连接时,Android 浏览器 WebSocket 对象上的“就绪状态”始终保持为“0”,而在工作实现时它会发生变化。

另见this related question。

【讨论】:

【参考方案2】:

您使用的是哪个版本的 Android?

根据CanIUse.com,唯一支持Websockets的Android浏览器是4.4。

干杯。

【讨论】:

非常感谢。据我所知,只有少数手机有假 ws,例如运行 4.1.2 的 Galaxy s3/gt-i9300。我可以通过二进制类型从真实的 ws 中找到假 ws 吗?

以上是关于Android浏览器中的假websocket功能的主要内容,如果未能解决你的问题,请参考以下文章

之前Chrome浏览器在搜索浏览历史的时候,可以通过把页面中的内容(不仅限标题)作为关键词来获取浏

适用于 Android 的 phonegap 中的 WebSocket HTML5

golang:编写WebSocket服务,client和html5调用

Django中的假管理员登录页面

Android 3.0 是不是支持 WebSockets?

android上的假gps应用程序(它是如何工作的)