Strophe MAM 如何显示消息?

Joh*_*ohn 1 javascript strophe

我设法使用 Strophe MAM 将存档的消息放入 RAWInput,并显示最后一条消息(但仅显示最后一条)。如何显示来自 RAWInput 的所有消息?但不只是最后一个?

我如何提取消息来自谁?

我已将消息限制在最后 5 条。

connection.mam.query("test3@macbook-pro.local", {
  "with": "test4@macbook-pro.local","before": '',"max":"5",
  onMessage: function(message) {


            console.log( $(message).text());




  },
  onComplete: function(response) {
            console.log("Got all the messages");

  }
    });
Run Code Online (Sandbox Code Playgroud)

Yas*_*nth 5

您可以使用 ` strophe.mam.js插件获取所有消息

这是我的工作代码:

// Retrives the messages between two particular users.

var archive = [];

var q = {
    onMessage: function(message) {
        try {
            var id = message.querySelector('result').getAttribute('id');
            var fwd = message.querySelector('forwarded');
            var d = fwd.querySelector('delay').getAttribute('stamp');
            var msg = fwd.querySelector('message');
            var msg_data = {
                id:id,
                with: Strophe.getBareJidFromJid(msg.getAttribute('to')),
                timestamp: (new Date(d)),
                timestamp_orig: d,
                from: Strophe.getBareJidFromJid(msg.getAttribute('from')),
                to: Strophe.getBareJidFromJid(msg.getAttribute('to')),
                type: msg.getAttribute('type'),
                body: msg.getAttribute('body'),
                message: Strophe.getText(msg.getElementsByTagName('body')[0])
            };
            archive.val(archive.val() + msg_data.from + ":" + msg_data.message + "\n" + msg_data.to + ":" + msg_data.message + "\n");
            archive.scrollTop(archive[0].scrollHeight - archive.height());
            console.log('xmpp.history.message',msg_data.message);
        } catch(err){
            if(typeof(err) == 'TypeError'){
                try {
                    console.log(err.stack)
                } catch(err2){
                    console.log(err,err2);
                }
            }
        }
        return true;
    },
    onComplete: function(response) {
        console.log('xmpp.history.end',{query:q, response:response});
    }
};

$(document).ready(function)(){
archive = $("#archive-messages");
archive.val("");
$("#to-jid").change(function() {
            $("#archive-messages").val("");
            var to = {"with": $(this).val()};
            $.extend(q, to, before, max);
            // It takes around 800ms to auto login. So after this timeout we have to retrieve the messages of particular User.
            setTimeout(function(){
            connection.mam.query(Strophe.getBareJidFromJid(connection.jid), q);
        }, 1000);
        });
});
Run Code Online (Sandbox Code Playgroud)