我编写了一个cordova 项目,该项目将集中使用websockets。我已经设置了一些 java 类,它们将在 android 平台上实现 websockets,同时仍然能够以与本机实现相同的方式在 javascript 中使用 websockets。这意味着,然后我有一个 websocket 对象及其方法 onopen、onmessage 等等......
由于移动 safari (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 中输出与移动 safari 中相同的属性和方法。
我想这意味着,他们保留了带有空函数的命名空间。
然后我将如何检查是否支持 WebSockets?我不想使用用户代理字符串来识别,因为当最终支持的新版本即将到来时,我不想再次修改它。
奇怪以前没有人遇到过这个问题..
有什么想法吗?