WebSocket を集中的に使用する cordova プロジェクトを作成しました。Android プラットフォームに Websocket を実装する Java クラスをいくつか設定しましたが、ネイティブ実装と同じように JavaScript で Websocket を使用することもできます。つまり、onopen、onmessage などのメソッドを持つ websocket オブジェクトがあります...
モバイル サファリ (iPhone) は既に websockets をサポートしているため、javascript 部分を再度実装する必要はありません (両方のプラットフォームで html/css/js ソースが 1 つしかありません)。つまり、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>"));
モバイルサファリと同じプロパティとメソッドをアンドロイドで出力します。
つまり、空の関数で名前空間を予約していると思います。
WebSockets がサポートされているかどうかを確認するにはどうすればよいですか? ユーザー エージェント文字列を識別に使用したくありません。最終的にサポートされる新しいバージョンが登場したときに再度変更したくないからです。
奇妙なことに、以前は誰もこの問題に遭遇していませんでした..
何かご意見は?