Add support for XEP-0184: Message Delivery Receipts

Description

Sometimes messages can be dropped if TCP connection with a client is broken (xmpp server can't always notice this). Needs support on both ends (client and server).
XEP: http://xmpp.org/extensions/xep-0184.html

Environment

None

Attachments

1

Activity

Show:

Florian Schmaus February 4, 2013 at 9:55 AM

Georg March 10, 2012 at 11:48 PM

I have implemented what is needed for XEP-0184 in smack:
http://op-co.de/tmp/0001-Implement-XEP-0184-delivery-notifications.patch

An example implementation using that code can be seen here:
https://github.com/ge0rg/yaxim/commit/5d70eddf232379e10f2a22028420fb4b6d04f1d5

Please merge the patch into SMACK (or give me feedback about what needs to be changed).

Daniel January 29, 2012 at 6:42 PM

wroot, thanks for your input. The reason why I think this does not need server support is that XEP-0184 is a client to client extension which is transparent to the server (see the spec itself, or implementations of other xmpp clients such as gajim). This makes it even more desirable to implement it in SMACK as it avoids a dependency to server support.

You are however right that there should be additional acknowledgments and reliability on the transports between c2s, s2s and s2c, but those are not part of XEP-0184 but described in XEP-0198 Stream Managment (see SMACK issue 333), which I encourage you to vote for. Both together should make XMPP for smartphones with unreliable TCP connections usable for the first time.

wroot January 29, 2012 at 6:34 PM

Why do you think this is not server related? All messages are going through the server. When message is sent then client should wait for an acknowledge about reception. So other client should send something back when it receives a message (some special TCP packet?). Again this would probably go through the server and the server should understand such packets and pass them through. Or do you mean that acks should bypass the server and go directly from client to client? What if this is not possible and two clients can communicate only through a server (firewall, vpn, nat, etc.)?

Daniel January 29, 2012 at 6:10 PM

I extensively tested various Android Jabber clients under real-life conditions. Together with a friend under regular daily conditions (losing network when moving around in the building, changing from wifi to gsm and so forth) we lost about 10% of our communication, again without an indication which messages transmitted and which didn't. In conclusion XMPP on smartphones is not usable unless you sit still and do not move/risk dropping your data connection. Therefore I think this is one the most important issues to fix if we want to see XMPP on smartphones being a success.

On a related note this is client to client and does not require server support.

Fixed

Details

Assignee

Reporter

Ignite Forum URL

Components

Fix versions

Affects versions

Priority

Created March 8, 2011 at 4:52 AM
Updated October 28, 2020 at 1:28 PM
Resolved September 8, 2013 at 7:35 AM