Hi…had same problem on Neos, the software I used for testing and configuring on my Intranet.
Setting idle connection on server for me wasn’'t enough: had to set on Neos the continuous keep alive.
Then, on a server without domain, server ofthen recognizes an error in the request header of client connecting.
That’‘s because ofthen we don’'t give to a server without domain a “domain like” name, like fake domains, just for use, so the server recognizes an error, and disconnects client.
Theorically, to obtain a correct header to the server, using, for istance, a dynamic DNS service, we should first choose the domain name, then, call the machine (change machine name) with same name, and then set Openfire server name in the same way.
Anyway this problem is not so heavy, and you can just set a frequent keep alive on client.