Difference between revisions of "XEP-Remarks/XEP-0045: Multi-User Chat"

Jump to navigation Jump to search
Line 36: Line 36:
The "most viable" workaround is:
The "most viable" workaround is:


Periodically do:
# set a (short, like maybe 15mins, or periodic) timeout after the last stanza received from a MUC
* send a XEP-0199 ping IQ to your participant JID (it might get reflected to your client or to another one)
# on timeout: send a ping IQ to your own participant JID
* set a timer
# (maybe) respond to the reflected ping IQ, depending whether you are the "most active" MSN and on the phase of the moon
* if you receive a ping, respond to it
# if the ping IQ is responded to with iq-result, service-unavailable (official RFC response for a feature not implemented) or  feature-not-implemented (incorrect but found in the wild response for feature not implemented): phew, we are still joined, we are done
* once you receive the ping response, you know you are still joined - stop the timer
# if the ping IQ is responded to with anything else: we lost the connection to the MUC
* if the timer fires, you are probably not joined any more
#* send presence-unavailable
** send presence unavailable
#* rejoin
** send join presence
# if the ping IQ times out, one of your clients probably lost the connection to the MUC, just to be sure we need to:
#* send presence-unavailable
#* rejoin


= MUC double join =
= MUC double join =

Navigation menu