145
edits
(3 intermediate revisions by the same user not shown) | |||
Line 13: | Line 13: | ||
in http://xmpp.org/extensions/xep-0045.html#enter-history, which is not found in XEP-33 (nor XEP-33s schema). | in http://xmpp.org/extensions/xep-0045.html#enter-history, which is not found in XEP-33 (nor XEP-33s schema). | ||
= | = Matching Your Reflected Message = | ||
It's not specified what should happen if an entity sends an initial presence when it's already joined. Implementations should behave towards the joining entity like it successfully joined. | So you sent a message to a MUC and want to immediately display it as "on the way" (good UX). Some time later (usually within some seconds) you receive a message from the MUC which might or might not be your sent message. | ||
Find out if a relfection is your actual message, in six easy steps! The message is your reflection if: | |||
# you recently sent a message to the MUC, '''AND''' | |||
# the received message is from your participant JID, '''AND''' | |||
## the message ID matches ''(a nice MUC, but not required by the XEP)'' '''OR''' | |||
## the message body matches ''(not conclusive, some MUCs auto-pastebin)'' '''OR''' | |||
## the received message is the first line of the sent message ''(transports like IRC split multi-line messages into one-liners)'' '''OR''' | |||
## the sent message is very long (>400 bytes) and the received message is a prefix of it ''(IRC transpors split very long one-liners too!)'' | |||
(this mechanism doesn't cover MUCs which don't reflect the message ID and do autopastebin. Screw them!) | |||
= Am I still there? = | |||
Current MUC / server implementations do not send offline-presence packets to participants on service restart. Therefore, a client will think it is still joined to a MUC indefinitely. | |||
There is no portable/reliable mechanism to check if the client is still joined, and no clean way to re-sync the state if it is not joined. | |||
This problem needs to be solved at the MUC service / service-hosting server level eventually, but a workaround is needed on the client side. | |||
Maybe a periodic presence packet can be sent to the MUC, checking the result (either a reflected presence update or a full join). | |||
= MUC double join = | |||
It's not specified what should happen if an entity sends an initial presence when it's already joined. Implementations should behave towards the joining entity like it successfully joined. That means, if a presence update containing an <x> element is received from a participant, the server should send back the full presence list, the requested amount of history and the room subject. | |||
= MUC PM messages are not distinguishable from other MUC messages = | = MUC PM messages are not distinguishable from other MUC messages = | ||
http://mail.jabber.org/pipermail/standards/2015-May/029819.html | http://mail.jabber.org/pipermail/standards/2015-May/029819.html |