2016-08-17 7 views
3

私は、コードの下に使用してXMPPサーバー(openfire)に接続するためのstrophe.js JavaScriptクライアントライブラリを使用しています。以下のようにstrophe.jsを使用してオンラインおよびオフラインのユーザー

var BOSH_SERVICE = 'http://127.0.0.1:7070/http-bind/'; 
connection = new Strophe.Connection(BOSH_SERVICE); 

    connection.connect("jid", 
        "password", 
        onConnect); 

とコールバック関数(のonConnect):

function onConnect(status) 
{ 
    if (status == Strophe.Status.CONNECTING) { 
    log('Strophe is connecting.'); 
    } else if (status == Strophe.Status.CONNFAIL) { 
    log('Strophe failed to connect.'); 
    $('#connect').get(0).value = 'connect'; 
    } else if (status == Strophe.Status.DISCONNECTING) { 
    log('Strophe is disconnecting.'); 
    } else if (status == Strophe.Status.DISCONNECTED) { 
    log('Strophe is disconnected.'); 
    $('#connect').get(0).value = 'connect'; 
    } else if (status == Strophe.Status.CONNECTED) { 
    log('Strophe is connected.'); 
    log('ECHOBOT: Send a message to ' + connection.jid + 
     ' to talk to me.'); 

    connection.addHandler(onMessage, null, 'message', null, null, null); 
    connection.send($pres().tree()); 
    console.log($pres().tree()); 

    } 
} 

私は正常にこのまで、このコードと何の問題を使用してサーバーに接続しています。

問題:ステータスでユーザーリストをリアルタイムで更新しています。

は私が私の問題を説明してみましょう:

私はリアルタイム更新で、オンラインとオフラインのユーザーのリストを表示する(チャットのアプリを示すことに類似したもの。)

元。 A、B、Cの3人のユーザーがいて、すべてオンライン(ログイン)しているとします。

ユーザーAが切断されたり、オフラインになった後、ユーザーB、CがユーザーAの状況を通知されるとします。ユーザBとCのリストを更新せずに、ユーザAのステータスをオフラインに変更します。

strophe.jsには、ある人が接続または切断すると自動的に呼び出されるメソッドがあります。または私は自分自身を書く必要がありますか?

私には確かではありませんが、名簿には何かがあります。

答えて

5

あなたはこの詩句のAPIを使用して、あなたの仲間のために存在を購読することができます:

connection.send($pres({ 
    to: jid,  // buddy jid 
    type: "subscribe" 
})); 

XMPPの仕様を実装している(詳細はhttps://xmpp.org/rfcs/rfc3921.html#intを参照してください)。 バディで応答サブスクリプションを受け入れることができます:あなたはPlunker上(Strophe.jsを使用して)XMPPに基づいて自分のWebクライアントの例を確認することができます

connection.send($pres({ 
    to: from, // jid of subscriber 
    type: "subscribed" 
})); 

:あなたの応答のための

http://plnkr.co/edit/EhQHDsYpDhrECmaaIlZO

+0

感謝を。私は火をつけて自動加入者を設定するためのサブスクリプションプラグインを追加するだけです。そして今はうまく働いています...あなたの答えはまた私が知りたいものです。ありがとう。 –

+0

strophe.jsやopenfireで他のlibを使ってビデオチャットを作成することは可能ですか? –

+0

私はあなただけのWebRTCの機能を確認することを提案することができますWebブラウザーは、ピア間でリアルタイムのオーディオ/ビデオ通信を行うことができます – beaver

関連する問題