This commit is contained in:
stpeter 2010-09-28 16:53:38 -06:00
parent 26c5b468a6
commit 17207ae196
1 changed files with 17 additions and 9 deletions

View File

@ -24,6 +24,12 @@
&stpeter;
&ianpaterson;
&ksmith;
<revision>
<version>0.8</version>
<date>2010-09-28</date>
<initials>psa</initials>
<remark><p>Expanded upon use with normal messages; cleaned up several matters in the text; added informational pointers to RFC 5322 (email) and RFC 5536 (netnews).</p></remark>
</revision>
<revision>
<version>0.7</version>
<date>2010-07-12</date>
@ -123,8 +129,8 @@
<p>If the &lt;message/&gt; stanza is written in direct reply to another &lt;message/&gt; stanza, then the ThreadID SHOULD be the value from the the original &lt;message/&gt; stanza. (Determining what constitutes a &lt;message/&gt; stanza written in reply to another is a matter left to individual implementation, but it is envisaged that in most cases it would be the result of, e.g., the user clicking a 'reply' button when reading the contents of the previous stanza.)</p>
</section2>
<section2 topic='Child Threads' anchor='child'>
<p>In some situations, the conversation veers from the original topic. In this situation, it can be sensible to generate a new thread that is an offshoot or child of the original thread. The connection of the child thread to the parent thread SHOULD be indicated by including the original ThreadID as the value of the 'parent' attribute.</p>
<example caption='Message with ID'><![CDATA[
<p>In some situations, the conversation veers from the original topic. In this situation, it can be sensible to generate a new thread that is an offshoot or child of the original thread. The connection of the child thread to the parent thread is indicated by including the original ThreadID as the value of the 'parent' attribute.</p>
<example caption='Thread with parent'><![CDATA[
<message
to='romeo@example.net/orchard'
from='juliet@example.com/balcony'
@ -140,27 +146,29 @@
</section2>
</section1>
<section1 topic='Handling' anchor='handling'>
<p>In general, the XMPP &lt;thread/&gt; element is handled in a manner similar to the "References:" header field from email (see &rfc5322;) and netnews (see &rfc5536;). Detailed guidelines for particular XMPP message types are provided in the following sections.</p>
<section2 topic='Chat Messages' anchor='chat'>
<p>In the context of &lt;message/&gt; stanzas of type "chat" exchanged between two entities, the value of the &lt;thread/&gt; element shall be considered equivalent to a unique identifier for the chat session or conversation thread. If an entity receives such a message with a new or unknown ThreadID, it SHOULD treat the message as part of a session with unnegotiated parameters. A client MAY destroy the thread when it goes offline, but SHOULD NOT destroy the thread if a human user merely disengages from the chat session (e.g., by closing a window in a client interface).</p>
<p>For &lt;message/&gt; stanzas of type "chat" exchanged between two entities, the value of the &lt;thread/&gt; element shall be considered equivalent to a unique identifier for the chat session or conversation thread. If an entity receives such a message with a new or unknown ThreadID, it SHOULD treat the message as part of a new chat session. A client MAY destroy the thread when it goes offline, but SHOULD NOT destroy the thread if a human user merely disengages from the chat session (e.g., by closing a window in a client interface).</p>
<p>If an entity receives an XMPP presence stanza of type "unavailable" from the other entity during a chat session, it SHOULD NOT destroy the thread; instead, it SHOULD assume that the other entity will still be able to continue the session (perhaps the other entity was temporarily disconnected by a network error or is persisting the state of the session until it reconnects and receives "offline" messages).</p>
<p>If an entity receives a message of type "chat" without a thread ID, then it SHOULD create a new session with a new thread ID (and include that thread ID in all the messages it sends within the new session).</p>
</section2>
<section2 topic='Groupchat Messages' anchor='groupchat'>
<p>In the context of &lt;message/&gt; stanzas of type "groupchat" exchanged between multiple entities in a &xep0045; room or similar environment, the value of the &lt;thread/&gt; element shall be considered equivalent to a unique identifier for a conversation thread in the multi-user environment.</p>
<p>For &lt;message/&gt; stanzas of type "groupchat" exchanged between multiple entities in a &xep0045; room or similar environment, the value of the &lt;thread/&gt; element shall be considered equivalent to a unique identifier for a conversation thread in the multi-user environment.</p>
<p>When displaying a threaded groupchat conversation within a user interface, a client SHOULD provide a visual indication of the thread to which a message belongs. Methods for such indications include (non-exhaustively) the grouping together of all messages from the same thread, providing an index of threads, or formatting all messages within a thread in a cohesive manner, e.g. with uniform coloring.</p>
</section2>
<section2 topic='Headline Messages' anchor='headline'>
<p>There are no special handling requirements related to threads in the context of &lt;message/&gt; stanzas of type "headline".</p>
</section2>
<section2 topic='Normal Messages' anchor='normal'>
<p>There are no special handling requirements related to threads in the context of &lt;message/&gt; stanzas of type "normal".</p>
<p>For &lt;message/&gt; stanzas of type "normal", the value of the &lt;thread/&gt; element shall be considered equivalent to a unique identifier for a conversation thread that proceeds outside the context of a "real-time" chat session or groupchat session.</p>
<p>When displaying threaded messages of type "normal" within a user interface, a client SHOULD provide a visual indication of the thread to which a message belongs. Methods for such indications include (non-exhaustively) the grouping together of all messages from the same thread, providing an index of threads, or formatting all messages within a thread in a cohesive manner, e.g. with uniform coloring.</p>
</section2>
<section2 topic='Headline Messages' anchor='headline'>
<p>There are no special handling requirements related to threads for &lt;message/&gt; stanzas of type "headline", because it is not expected that a client will allow the recipient to reply to such messages.</p>
</section2>
<section2 topic='Messages That Have Been Archived' anchor='archived'>
<p>When displaying historical conversations within a user interface, a client SHOULD provide a visual indication of the thread to which a message belongs. Methods for such indications include (non-exhaustively) the grouping together of all messages from the same thread, providing an index of threads, or formatting all messages within a thread in a cohesive manner, e.g. with uniform coloring.</p>
</section2>
</section1>
<section1 topic='Security Considerations' anchor='security'>
<p>An application that generates a UUID for use as the ThreadID MUST ensure that the UUID does not reveal identifying information about the entity (e.g., the MAC address of the device on which the XMPP application is running).</p>
<p>Several security considerations related to XMPP threads are described in &rfc3921bis;.</p>
</section1>
<section1 topic='IANA Considerations' anchor='iana'>
<p>This document requires no interaction with &IANA;.</p>