2

PubNub を使用して、1 対 1 のチャット アプリを作成しています。

基本的に、各ユーザーは自分のチャネルを購読し、メッセージはインスタント メッセージング方式で 2 つの当事者から互いのチャネルに送信されます。

その後、メッセージがページに表示されます。これにはJQueryを使用しています。

pubnub.subscribe({
    restore  : true,
    channel  : 'my_channel',
    callback : function(message) {
        console.log(JSON.stringify(message));
        $('div.chatbox').append('<div>'+message+'</div>');
    }
});

ただし、ユーザーがオフラインになったことを検出できるようにしたいと考えています (相手との接続が利用できなくなったという理由だけで、ユーザーがどのようにオフラインになったかはあまり気にしません)。

ユーザー 1 とユーザー 2 が会話している場合、ユーザー 2 はオフラインになります。PubNub 側に、ユーザー 1 がユーザー 2 の接続ステータスを確認できるメカニズムはありますか? これを JS コードでどのように実装しますか (スケルトン コードは問題ありません)。

前もって感謝します。

PS私はSocket.IOを使いたくない

4

2 に答える 2

8

PubNub を使用して切断された友人と自分の (ローカル) ネットワーク接続を検出する方法

モバイル、タブレット、および Web デバイスで切断されたネットワーク接続を検出するために、PubNub を使用して、PubNub JavaScript API の組み込みイベントにバインドすることで接続状態を表示できます。切断された接続と再接続の状態を理解するには、いくつかの側面があります。また、PubNub を使用すると、オンラインの友達の接続/切断イベントの社会的発見に興味があるかもしれません。このようにして、友達がオンライン状態であることを示す緑のドット効果と、友達がオフラインであることを示す赤い点を持つことができます。接続状態の追跡の 2 つの側面について説明します。これにより、ユーザー自身のデバイスがオフライン/オンラインになったとき、および友人がオンライン/オフラインになったときに、ユーザーを検出して通知できるようになります。

JavaScript PubNub API を使用したローカル接続状態の検出

携帯電話や Web ブラウザーなどの JavaScript 対応デバイスで、インターネットへのローカル接続状態を簡単に検出できます。少し高度な PubNub パラメータを使用して、接続状態の変更中に発生するコールバックにアクセスできるようにします。アプリケーション コードでコールバックを登録するのは簡単です。以下は、バック ポケットに入れておくための簡単なコピー アンド ペーストの開始点です。

<div pub-key="demo" sub-key="demo" id="pubnub"></div>
<script src="http://cdn.pubnub.com/pubnub-3.3.min.js"></script>
<script>(function(){

// LISTEN FOR MESSAGES
PUBNUB.subscribe({
    channel    : "hello_world",      // CONNECT TO THIS CHANNEL.
    restore    : true,               // STAY CONNECTED, EVEN WHEN BROWSER IS
                                     // CLOSED OR WHEN PAGE CHANGES.
    callback   : alert,              // FUNCTION TO RUN ON MESSAGE RECEIVED.

    disconnect : function() {        // LOCAL LOST CONNECTION.
        alert("Connection Lost.")
    },
    reconnect  : function() {        // CONNECTION RESTORED.
        alert("And we're Back!")
    },
    connect    : function() {        // CONNECTION ESTABLISHED.
        PUBNUB.publish({             // SEND A MESSAGE.
            channel : "hello_world",
            message : "Hi from PubNub."
        }) 
    }
})

})();</script>

注:上記は、ローカル デバイス接続イベントを登録するための簡単な方法です。

それでは、PubNub プレゼンスについてお話ししましょう。友人の接続を検出し、友人がオンラインまたはオフラインになったときにリモート接続イベントを受信できる PubNub の機能。

PubNub プレゼンスによるオンライン/オフライン状態の友人の検出

次に、友人がオンラインになったときとオフラインになったときに友人の接続状態を検出する方法について学習します。これらのイベントにも登録できますが、ユーザーの ID (または抽象 ID) を提供する必要があるため、少し手間がかかります。これは PubNub で行うこともできますが、少し複雑です。すぐに始められるように、2 つのブログ記事をお送りします。お見送りする前に、友達からのリモート オンライン/オフライン イベント通知に登録するための重要なコード スニペットを紹介します。

// Open Bidirectional Socket Connection with
// REMOTE Connection Detect "Presence" Events.
PUBNUB.subscribe({
    channel  : "my_channel", // Channel Name
    connect  : connect,      // OnConnect Callback
    callback : alert,        // Received Message Callback
    presence : presence      // Presence Callback
});

注: PubNub プレゼンス コールバック イベントを使用して、リモート接続ステータスの更新 (フレンド接続状態) を受信します。

コード サンプルでは、​​プレゼンスコールバックが表示されます。このパラメーター オプションには、同じ PubNub チ​​ャンネルで友達の接続変更 (オンライン/オフライン) が発生したときに実行される関数参照が必要です。要点がわかったので、次のブログ投稿をチェックして、PubNub の存在に関する具体的な詳細を確認する必要があります。

PubNub プレゼンス リソース

上記のリンクと参照を使用して、PubNub プレゼンスについて知る必要があるすべてを学びます

于 2012-11-03T06:18:42.707 に答える
2

help.pubnub.comナレッジベースのチャネルプレゼンスFAQも参照してください。

プレゼンス機能にsocket.ioを使用するのはクライアント側に限定されており(多くの場合、サーバーはクライアントの対話や会話を管理するためにプレゼンス情報を取得する必要があります)、モバイルでの過度のバッテリーの消耗とデータプランの浪費につながる非常におしゃべりなプロトコルです電話。

于 2012-11-03T11:19:47.693 に答える