0

Worklight Analytics のカスタム イベントを機能させるには大きな問題があります (WL v6.1)。

私の環境では、最新の 6.1.0.1 (0718) を使用しています。開発用の AWS インスタンスに Analytics をインストールしました。これを worklight.properties 経由で指定しています。運用分析ダッシュボードにアクセスでき、正しい基本分析データが表示されます。

mobileWeb (開発のみに使用)、iPhone、および Android 環境で問題が発生しています。

mobileWeb: 分析キューのサイズが永久に増加し、送信がトリガーされません。firebug でコードを実行したところ、mobileWeb に対して常に false を返す非推奨の WL.Client.isConnected() メソッドを使用しているようです。したがって、これをハッキングして true を返し、mobileWeb を適切に動作させることができました。キューは 10 メッセージ後にフラッシュされ、結果は Analytics コンソール サーバー ログで確認できます。これにより、分析サーバーが少なくとも適切に構成されていることが確認されます。

iPhone シミュレーター: 10 個のメッセージがキューに入れられた後に送信を試みます。ただし、分析サーバーの IHS から 400 を取得します。ログレベルを上げようとしましたが、それ以上何も生成できませんでした:

<wl_server_ip> - - [11/Aug/2014:13:12:42 -0400] "POST /iwap/v1/events/_bulk HTTP/1.1" 400 335

Android エミュレーター: 分析送信が呼び出されると (10 個のメッセージをキューに入れた後)、TeaLeaf 例外が表示されます。

08-11 13:32:16.970: E/UICAndroid(1748): TL Library Error: url:http://<analytics_ip>:80/iwap/v1/events/_bulk stream errorjava.util.zip.DataFormatException: stream error
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.Deflater.deflateImpl(Native Method)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.Deflater.deflateImpl(Deflater.java:241)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.Deflater.deflate(Deflater.java:232)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.DeflaterOutputStream.flush(DeflaterOutputStream.java:193)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.HTTPUtil.createEntity(HTTPUtil.java:93)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.HTTPUtil.sendPost(HTTPUtil.java:181)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.HTTPUtil.sendHttpPost(HTTPUtil.java:115)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.PostTask.sendMessageFormat(PostTask.java:72)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.PostTask.doInBackground(PostTask.java:28)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.PostTask.doInBackground(PostTask.java:1)
08-11 13:32:16.970: E/UICAndroid(1748):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-11 13:32:16.970: E/UICAndroid(1748):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.lang.Thread.run(Thread.java:841)

これは非常に基本的な分析呼び出しであり、基本的に WL 6.1 InfoCenter からカット アンド ペーストしたものです。

function doBetterAnalyticsWork(i) {
        WL.Analytics.log({hello: 'world ' + i}, 'test-analytics')
        .always(function(wasQueueFlushed, errObj){
            if (wasQueueFlushed) {
                WL.Logger.debug('The queue was flushed');
            } else {
                WL.Logger.debug('The queue was NOT flushed');
            }
            if (typeof errObj === 'object') {
                WL.Logger.error('Error trying to flush the queue', errObj);
            }
        });
        WL.Logger.debug('WL.Analytics.state(): ' + JSON.stringify(WL.Analytics.state()));
    }

分析送信をトリガーするために、for ループでこれを 10 回繰り返します。ちなみに、「キューがフラッシュされました」というメッセージは表示されませんが、少なくともiPhone/Androidで送信を試みているようです。

どんな助けでも大歓迎です。必要に応じてより多くの情報を提供できます。

4

2 に答える 2

0

編集:

もう一度見た後、別の問題が表示されます。

TL ライブラリ エラー: url:http://:80/iwap/v1/events/_bulk ストリーム エラーjava.util.zip.DataFormatException: ストリーム エラー

- - [11/Aug/2014:13:12:42 -0400] "POST /iwap/v1/events/_bulk HTTP/1.1" 400 335

クライアントは「/iwap/v1/events/_bulk」に直接データを送信していますか? クライアント データは、分析サーバーに直接送られるべきではありません。これはワークライト・サーバーを通過する必要があり、ワークライト・サーバーはそれを分析サーバーに転送します。「/iwap/v1/events/_bulk」を指すようにクライアント コードを構成しましたか? この構成を削除すると、worklight サーバーを指す正しいロケーションにデフォルト設定されます。

オリジナル:

Worklight 6.1 では、Worklight は内部で Tealeaf を使用して分析データを収集および送信します。分析データがループ内で Tealeaf に送信されると、何らかの理由で失敗します。ループ内で呼び出しを行う代わりに、ボタンを使用して手動で WL.Analytics.log を呼び出してみてください。

于 2014-08-12T15:22:30.553 に答える