2016-03-22 45 views
4

HTML5 Webワーカーを使用して、タブにフォーカスがないときでも、定期的な間隔で安心してサーバーに経度と緯度を報告したいと考えています。私の問題は、通常私がHTML5 geolocation機能にアクセスする方法は、Webワーカーで利用できないということです。HTML5 Webワーカーでジオロケーションを使用する

私が試したことは、メインファイルからウェブワーカーにジオロケーションオブジェクトを送信することでした。しかし、それは動作しませんでしたし、私は次のエラーました:

Uncaught DataCloneError: Failed to execute 'postMessage' on 'Worker': An object could not be cloned.

次へ]を私はGeolocatorと呼ばれるジオロケーションサービスを提供するJavaScriptライブラリをインポートしてみました。しかし、私は労働者の図書館にアクセスすることができないことを知りました(私は、労働者がDOMにアクセスできないためだと思います)。

私はwindowにアクセスしていないため、このJavaScriptライブラリのソースをワーカーファイルに直接追加しましたが、これはソース全体で繰り返し使用されました。Geolocator

私は何をしようとしていますか?私が使用できる選択肢はありますか?

答えて

3

メインスレッドcontains a geolocation propertynavigatorオブジェクトです。これは、すべてのジオロケーション機能にアクセスする方法です。

ワーカーには、different navigator object, known as WorkerNavigatorが含まれています。このスレッドには、メインスレッドのnavigatorのプロパティのサブセットのみが含まれています。

WorkerNavigatorGeolocationオブジェクトとGeolocationオブジェクトがに労働者をシリアライズすることはできません欠けているので、あなたがウェブワーカーのGeolocation内部を使用することはできません表示されます。代わりに、メインスレッドから報告を行う必要があります。

+0

これは残念です。タブにフォーカスが合っていなくても実行されるWebワーカーに似たものはどれか知っていますか? – Haych

+2

@Haychウェブワーカーでタイマーを実行し、メインスレッドにRESTコールを実行するよう警告することはできますか?それがうまくいくかどうかわからない、私はそれを試していない。 –

+0

ServiceWorkersでのGeolocationの実装について2015年9月に開始された[w3c repo](https://github.com/w3c/ServiceWorker/issues/745)に関する議論が進行中です –

0

this質問には、あなたの提案の実例があります。現在のところ、Firefoxのバックグラウンドでのみ動作します(間違った理由で)、私たちがW3C/IETFで実質的な体制を変更するまで実装されるのは簡単ではありません。

は、しかし、あなたのように、そこに現実の世界で多く、このような要件があると私はそれらのすべてではない場合、私の提案はほとんど満たしていると信じています。

関連する問題