Dmi*_*try 12
由于规范时间是XMPP消息的必需属性:
http://xmpp.org/extensions/xep-0203.html#protocol
检查以下<delay项目<message:
<delay xmlns='urn:xmpp:delay'
from='capulet.com'
stamp='2002-09-10T23:08:25Z'>
Offline Storage
</delay>
Run Code Online (Sandbox Code Playgroud)
但是让它看起来有点棘手.一旦aSmack重新编译了一些被替换的东西,所以试着像这里一样:
http://edwin.baculsoft.com/2011/06/how-to-get-offline-messages-timestamp-on-openfire/
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();
Run Code Online (Sandbox Code Playgroud)
Problably,您需要检查哪些服务器消息作为扩展值发送和更换"jabber:x:delay"用'urn:xmpp:delay',因为它是在XMPP规范示例所示.
但不确定它是否有效.
Rob*_*bin 11
时间戳不是常规消息的一部分.因此,您无法提取它.
有一个规范(如@Dmitry所述),但这仅适用于特定类型的消息.通常是那些非实时的,例如离线并在创建新订阅时发布节点的最后一个pubsub消息.这些是内置于其中的固有延迟的消息.
尽管这里已经部分融合了其他答案,但我还是会提出以下答案...
XMPP是“实时的” ...尽管该术语对不同的人可能意味着很多不同的事情,但是通常来说,您可以放心地假设您(几乎)在消息发送后立即收到消息-所有XMPP软件都是围绕满足这个目标。
但是,并没有关于端到端延迟的实际保证。在一般情况下,尽管网络条件可能会影响该消息,但通常在发送者发送该消息后,您总是会收到一秒钟以内的消息。
在某些情况下,例如当需要建立新的服务器到服务器连接时,该消息将被暂时延迟。通常,这最多可能需要花费几秒钟的时间,具体取决于网络条件和服务器之间使用的身份验证方法。
如果收件人处于脱机状态,则消息也可能会被阻止-收件人的服务器可能会将消息保存在“脱机消息”存储中,直到当收件人联机时它可以将其传递为止。
由于XMPP消息的一般即时传递,因此时间戳通常不包含在消息本身中,因为该信息是无用的(并且假定时钟都是正确的)。
但是,例如在上面的示例中,在消息被故意延迟的情况下,延迟消息的实体可以在消息中插入一个标记,以指示消息的原始时间。XEP-0203:延迟交货中对此进行了详细说明。
| 归档时间: |
|
| 查看次数: |
12583 次 |
| 最近记录: |