要想保证信息的传输,目前在smack/asmack + openfire架构上,我个人想到有两种实现方式:
1.端到端确保发送(类似短信)。
其实这个就是xmpp协议的XEP-0184: Message Delivery Receipts.
里边为了确保消息的到达,需要接收方返回回执,这样发送方就知道对方是否确切收到消息。
当然咯,接收回执过程中也可能出现断线,导致发送方收不到回执,而认为接收方没收到,再重新发的问题,这个需要接收方过滤掉重复的信息来解决。
其实这个协议,asmack在0.8.3版本就已经支持,具体什么版本开始,就懒得去研究了。
需要注意的是:这个是两个客户端之间的事情,即openfire什么也不用干,只要客户端都支持xep-0184就可以了。
下面简单说下xep-0184协议的交互内容:
发送方发送一个需要回执的消息:
<message from='northumberland@shakespeare.lit/westminster'
id='richard2-4.1.247'
to='kingrichard@royalty.england.lit/throne'>
<body>My lord, dispatch; read o'er these articles.</body>
<request xmlns='urn:xmpp:receipts'/>
</me