I haven't completely figured out how Multi-Session nicks are supposed to be handled (since the MUC draft standard only says that they "are not currently defined in this document"). It appears that in ejabberd:
- Every new client joining a room generates a presence stanza, whether or not their nick was already associated with another client.
- Leaving a room only generates one "unavailable" presence stanza, for the very last client to disconnect from a nick.
- If a user is kicked or banned from a room, a separate "unavailable" stanza is generated for each client (which seems a bit odd, considering the previous).
Unfortunately, the first two points seem to imply that any attempt to reliably associate a nick with a JID is futile: If a user connects to a nick from multiple clients, and then disconnects all but one of them, it is impossible to tell which client is still connected. Is this intentional?