Pessoal, estou aprendendo a tecnologia xmpp, mas verifiquei que esse problema é resolvido com configurações de prioridades pelos dispositivos.
Exemplo, eu conecto uma aplicação web e outra mobile, ambas com prioridade setada 127, as mensagens serão enviadas pelo servidor para ambos os dispositivos, pois tem a mesma prioridade. O valor da prioridade varia de -128 a 128. se eu setar o web com 127 e o mobile com 128, as mensagens irão para o mobile, caso os dois estejam conectados, ou seja para a prioridade maior. Cada recurso deve ter um nome diferente pra isso funcionar, caso contrario, quando uma entra o outro cai. Na lista de sessoes do openfire da pra ver o nome do recurso e a prioridade de cada recurso. Cada dispositivo deve ter um local de setar a prioridade, no caso de uma implementação, usar public void setPriority(int priority).
Não tenho muita prática com isso tudo, mas mesmo sendo iniciante, ja testei isto e funciona.