414 DeLong St.
Message Events are for notifications of "message delivered" or "user is composing a reply" type of events. These are not required and only enabled on demand, only when the originating client requests this feature and the recipient client supports it.
There are currently four event types: offline (stored), delivered (to client), composing (the reply), and displayed (made visible to the recipient). The recipient server determines the offline event, and the recipient client determines the delivered, composing, and displayed events. If the sending client supports any of these events in it's GUI and wants to receive them for a particular message, it should include the extension in that message. If the recipient server/client supports the extension, it should respond appropriately as shown below. It would be inappropriate to respond or generate events when not requested!
The composing event is generated when the user is actively typing a reply to the message. If the user never completes/sends the reply (or after an idle timeout), an empty jabber:x:event (just contains the id element) should be sent to "clear" the outstanding composing event.
Original Message (requests that the offline and displayed events should be sent if/when they occur): <message to="firstname.lastname@example.org" from="email@example.com" id="MSG_31"> <body>foo bar</body> <x xmlns="jabber:x:event"><offline/><displayed/></x> </message> Return Event (the id element flags that it is a return event): <message to="firstname.lastname@example.org" from="email@example.com"> <x xmlns="jabber:x:event"><displayed/><id>MSG_31</id></x> </message>