Message to a recipient is never recieved while user is disconnected

We have users with laptops who go back and forth between their desks and meetings all day long, and sometimes they will not recieve a message. (This issue seems to only happen while they are disconnected from the network.) Typically a user will disconnect their laptop from the network (closes screen, then goes into standby), and take their laptops to/from a meeting. During this disconnected time for the laptop, the Openfire server still shows the client as “Online”, and does so for approximately 6 minutes until the server kicks the idle connection. I have changed this default of 6 minutes down to 2 minutes using the property ‘xmpp.client.idle’, and this has helped to some degree.

My question is, is there a way to notify the sender of a message that the recipient never received the message (because the user was disconnected but the server still showed the user as “Online”) ? Or, for the server to store the message and send it upon the user reconnecting? Surely the Openfire server is aware of whether or not a message was actually received…?

Openfire version: 3.6.4 (CentOS 5.3)

Spark version: 2.5.8 (Windows XP)

Any help would be greatly appreciated!

–Curt

You can check Offline Messages settings on the server, though probably this is not the case.

I have Offline Messages enabled already, but that only works for when the Openfire server realizes that the user is “Offline”, at least in my experience… I would like to know if there is a solution to my issue where a user has disconnected from the network (not logged out), and the server still shows as “Online”.

I believe IM networks such MSN, Yahoo, AIM, etc have this type of notification, where the sender of a message is notified from the server that the recipient may have not recieved the message due to user being disconnected.

Any ideas?

Thanks,

Curt

Actually i have noticed similar issues long time ago when we were having network issues often (electricity breakdowns). Now i have checked this with my collegue. He has turned sleep on his laptop and i was seeing him as Away, and i tried to send a message. But when he turned his laptop on, he was actually offline and never got my message.

This is a bit complex issue. It would be easy to kill any session which is idle for some time, but then it will make users’ clients to reconnect all the time, or these clients should be sending some heartbeat packets every second or such. Then this will create massive unneeded traffic. So, this need some balancing. xmpp.client.idle system property is one of the tools to do that. There are some other properties, but they are not documented very well, and sometimes it looks like they dont work as expected. Only the original Openfire developer can answer such questions, i think.

Also, Openfire doesnt have any checking whether message was received or not, i believe. If it sees that a user is online, it just sends the message and that’s all. And this has to be supported by the client too, to send acknowledgement command after receiving the message. Again, this will create a traffic overhead.

Not much help for you. I’m trying to investigate how these properties work (or dont work) for some time and have filed one ticket about xmpp.client.idle property. But i’m far from seeing whole picture, i think some properties could be related and depend on each other.