GETTING TIMESTAMP FROM INCOMING XMPP MESSAGE

Glen Martin

Total Post:27

Points:191
Posted by  Glen Martin
 3940  View(s)
Ratings:
Rate this:

I am using aSmack library to communicate with remote xmpp server. I am able to send/receive messages, but I want to get timestamp of incoming message.

Could you tell me please, is it possible at all? 

  1. Mayank Tripathi

    Post:397

    Points:3117
    Re: Getting timestamp from incoming xmpp message

    Timestamp is not part of the regular messages. Therefore you cannot extract it.

    There is a spec (as mentioned by @Dmitry), but this only applies to specific types of messages. Typically those that are NOT realtime, such as offline and publishing the last pubsub message of a node when a new subscription is created. These are messages with an inherent delay built into the

    Due to specs time is required attribute for XMPP message:


    Check the <delay> item of <message>:

    <delay xmlns='urn:xmpp:delay'
     from='capulet.com'
     stamp='2002-09-10T23:08:25Z'>
    Offline Storage
    </delay> 
    But getting it looks a bit tricky. As soon as aSmack is recompiled Smack with some replaced stuff, so try to get it the way like here:


    DelayInformation inf = null;
    try {
        inf = (DelayInformation)packet.getExtension("x","jabber:x:delay");
    } catch (Exception e) {
        log.error(e);
    }
    // get offline message timestamp
    if(inf!=null)
        Date date = inf.getStamp();

    Problably, you will need to check what server sends with message as extension value and replace "jabber:x:delay" with 'urn:xmpp:delay' as it is shown in XMPP specs example.

    But not sure if it works.

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!