A user can login by using PC client (pidgin, spark, …) and mobile client (beem, gibberbot, xabber, …) . however, I want to forbid user to login from multiple clients and a user can only login by using one xmpp client at the same time. System properties like xmpp.session.conflict-limit, route.all-resources can do this ? how ? i tried route.all-resources, but it didn’t work.
There is no such option
I would imagine a plugin that would reject multiple logins is your only option.
No, I don’t know how to write such a plugin, assuming it is possible.
i did try to write such a plugin to kick out the former login session and it took effect, but many xmpp client will reconnect openfire server while i closed connection manually, so the result is that two client will login and be kicked out, login and be kicked out, again and again.
I think there is another way to “kick” the session when a client won’t try to reconnect, but i don’t know how to do it. Just sometimes a client disconnects and doesn’t try to reconnect (from my observations).
this is how i implemented to close the former login session.
XMPPServer server = XMPPServer.getInstance();
SessionManager sm = server.getSessionManager();
Collection sessionList = sm.getSessions(username);
for(ClientSession session : sessionList){
session.close();
}
right ?