2016-12-23 13 views
1

pubnubが接続されているとき、私のアプリ内のユーザーは問題なくメッセージを受け取ります。ただし、ページを更新するか、アプリ内の別のページに移動するとします。ユーザーがpubnubに再び接続できるようになるまでに2〜5秒のダウンタイムがあります。この間、pubnubメッセージが表示されないことがあります。pubnub timetokenを使用してページの更新を処理する方法

ありがたいことに、pubnub subscribe APIは、timetokenを指定して過去の時間(例:10秒前)を指定できます。

pubnub.subscribe({ 
    channels: ['my_channel'], 
    timetoken: '13534398158620385' 
}); 

説明:

が使用可能な任意のキャッシュされたメッセージを返す開始し、そこからtimetokenを指定します。

質問: いくつかのメッセージが失われていることを、このtimetokenなどを指定するための最も安全な方法は何ですか?

+0

ページの読み込みに2〜5秒かかりますか?あなたのページの負荷を最適化することを検討したいと思います。この問題でサポートチケットを提出した人はいませんでした。しかしあなたの答えは確かです。よくやった。 –

+0

@CraigConoverこれは単なる例に過ぎないので、質問をかなり基本的なものにしたいと思っていました。ここでの負荷とは、pubnubをロードするのにかかる時間とは対照的に、ウェブページの負荷を指します。 –

+0

それは私の理解だった。コンテンツの内容がそれほど長くないのではないかと思っています。コンテンツをロードする前にPubNubを最初に押すことは可能でしょうか? –

答えて

2

まず、ウィンドウでbeforeunloadイベントを聴いてください。これらは、ページが離れる前に発射されます。この内の現在timetokenを保存するためにクッキーを作成します。

window.addEventListener('beforeunload',() => { 
    const now = new Date().getTime(); 
    // pubnub timetokens are 17 digits long 
    const timetoken = `${now}0000`; 

    createCookie(PUBNUB_TIMETOKEN_COOKIE, timetoken, EXPIRATION); 
}); 

注:PUBNUB_TIMETOKEN_COOKIEEXPIRATIONは、あなたが選んだの定数です。私は、クッキーが衝突するのを防ぐために10秒後に期限切れになるように設定しました。また、this oneのような関数createCookieを定義する必要があります。

pubnub.subscribe({ 
    channels: ['my_channel'], 
    timetoken: getCookie(PUBNUB_TIMETOKEN_COOKIE) 
}); 

この方法は、ユーザーがリフレッシュしたり、別のページに移動した場合、メッセージがキャッチされなければならない逃した:ページのロードにpubnubするサブスクライブするとき

次は、それが存在する場合は、このクッキーを使用します。

関連する問題