Making some static analysis of the code, in particoular on the Java NIO module, i found an issue.
This was confirmed by some test too.
The XMPP server does nothing when it doesn’t receive a TCP Ack for a particoular message.
In my scenario I send a push notification when the server has to deliver a message to an offline user.
Now imagine the case in which an Alice doesn’t unregister in the right way cause to loss of 3g connection, for example.
In that case the server assumes that Alice is still online until the next unanswered ping request.
During this time interval the server try to deliver messages to Alice but she’ll receive neither the message nor the push notification.
I think that the fact that the server doesn’t receive any tcp ack could be sufficient to apply an offline policy ( put the message in sore&forward queue, send push notification etc…).
Did you agree with my idea?
Anyone has implemented already something like this?
thanks a lot