在Cordova项目中检查原生Android浏览器中的WebSocket支持
Check for WebSocket support in native android browser in a cordova project
我创建了一个Cordova项目,它将大量使用websockets。我已经设置了一些java类,这些类将在android平台上实现websockets,同时仍然能够以与本机实现相同的方式使用javascript中的websockets。这意味着,然后我有一个 websocket 对象及其方法 onopen
、onmessage
等等......
由于移动野生动物园(iPhone)已经支持websockets,我不必再次实现javascript部分(两个平台只有1个html/css/js源代码)。这意味着我必须编写一个函数来告诉我是否支持 android。
我有什么:
var supportsWebSockets = function() {
if ('WebSocket' in window) {
if (WebSocket.hasOwnProperty('onopen'))
return true;
else
return false;
} else {
return false;
}
}
但这并不能做到这一点。然后,我制作了一个脚本,它将输出 WebSocket 对象的所有方法和属性:
var obj = new WebSocket('ws://echo.websocket.org');
var methods = [];
for (var m in obj) {
methods.push(m);
}
document.write(methods.join("<br>"));
这在android中输出的属性和方法与在移动野生动物园中相同。
我想这意味着,他们已经保留了带有空函数的命名空间。
然后,我将如何检查是否支持 WebSocket?我不想使用用户代理字符串来识别,因为我不想在具有最终支持的新版本到来时再次修改它。
奇怪的是以前没有人遇到过这个问题。
有什么想法吗?
好的,
所以我可以看到有评论的正确答案略有不同,我个人喜欢积极检查,所以会执行以下操作来检查浏览器是否支持使用 JavaScript 的 WebSockets...
if (typeof WebSocket === "function"){
// implement WebSockets
} else {
// fallback
}
另一个答案会在 Safari 中给出误报。我认为最好的方法是三件事的结合:
if ('WebSocket' in window
&& (typeof WebSocket === 'function' || typeof WebSocket === 'object')) {
// supports WebSocket
} else {
// does not support WebSocket
}
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 安卓股票浏览器是否支持WebSocket
- 通过 WebSocket 将视频文件发送到浏览器
- 使用 Websocket 控制浏览器窗口
- 在Cordova项目中检查原生Android浏览器中的WebSocket支持
- 通过websocket阻止Web浏览器和python之间的大量交换
- 在浏览器选项卡之间共享websocket
- Websocket客户端(浏览器)接收到一个零长度的消息-它是什么?
- 浏览器中的最大websocket连接数
- 如何重新连接浏览器websocket客户端
- WebSocket和浏览器支持
- 浏览器收到Websocket输出,报头值“无效的UTF-8序列”
- JavaEE Websocket:关闭浏览器选项卡将关闭所有会话,无论浏览器如何
- 在浏览器中从WebSocket获取IP地址
- 如何在浏览器中使用javascript找到websocket协议版本?
- NodeJS&&浏览器交叉兼容的websocket客户端
- websocket如何处理同一浏览器的两个选项卡