1

Strophe.js で ejabberd 15.06 バージョンを使用しています。バックエンド データベースから 1 対 1 のチャットを取得すると、問題なく動作します。しかし、データベースからグループチャットの履歴を取得するにはどうすればよいですか??

たとえば、「strophe」グループがあるとします。新しいユーザーが strophe グループに参加すると、他のユーザーがグループで行ったチャット履歴が表示されるはずです。

私はこのコードを使用しています

var pres = $pres({ to:  room + "/" + nickname, from: connection.jid });
connection.send( msg.c('x', {xmlns: NS_MUC}));

if(chat_history != null){
    var msg_history = msg.c('x', { "xmlns": "http://jabber.org/protocol/muc"}).c("history", chat_history, {maxstanzas: 50});
    debugger;   
    console.log(msg_history);           
}

私のコンソールでは、次のようになります

h.Builder {nodeTree: presence, node: x}

グループチャットの履歴を取得する方法に行き詰まっています。助けてください

4

1 に答える 1

5

通常、ルームが履歴を送信しないように構成されていない限り、参加プレゼンスを送信するだけで、最新のチャット ルーム メッセージを受信できます。古いメッセージには、元のメッセージが送信された時刻を示す遅延タグが付けられていることに注意してください。そのため、クライアントがそれらのメッセージを破棄していないことを確認してください。

履歴サイズを制御したい場合は、Strophe MUC プラグインを使用してルームに参加し、最大スタンザと制限時間をhistory_attrs変数として送信できます。サーバーとルームも、履歴を提供するように構成する必要があります。

conn.muc.join(room, nick, msg_handler_cb, pres_handler_cb, roster_cb, password,{ maxstanzas: 10, seconds: 3600 });
于 2015-08-03T18:56:22.860 に答える