<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xep SYSTEM 'xep.dtd' [
  <!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
  <title>Implicit XMPP WebSocket Endpoints</title>
  <abstract>This document specifies implicit connection endpoints for XMPP over WebSocket (RFC 7395).</abstract>
  &LEGALNOTICE;
  <number>xxxx</number>
  <status>ProtoXEP</status>
  <type>Standards Track</type>
  <sig>Standards</sig>
  <approver>Council</approver>
  <dependencies>
    <spec>XMPP Core</spec>
    <spec>XEP-0001</spec>
    <spec>Etc.</spec>
  </dependencies>
  <supersedes/>
  <supersededby/>
  <shortname>iwe</shortname>
  &flow;
  <revision>
    <version>0.0.1</version>
    <date>2020-01-28</date>
    <initials>fs</initials>
    <remark><p>First draft.</p></remark>
  </revision>
</header>

<section1 topic='Introduction' anchor='intro'>

  <p>Unlike for XMPP connections via TCP as specified in &rfc6120;,
  there exists no specificiation of implicit connection endpoints for
  XMPP over WebSocket (&rfc7395;). As a result, XMPP services which
  whish to provide WebSocket connectivity need to announce their
  WebSocket endpoints, so that clients are able to discover them (RFC
  7395 § 4). This XEP fills this gap. It eventually enables, under
  certain conditions, XMPP services to provide WebSocket connectivty,
  without resorting to &xep0156; nor requiring manual configuration by
  the user.</p>

</section1>

<section1 topic='Implicit XMPP WebSocket Endpoints' anchor='reqs'>

  <p>The following implicit XMPP WebSocket endpoints are specified:</p>
  <ul>
	<li>wss://&lt;xmpp-service-name>:5443/ws</li>
	<li>ws://&lt;xmpp-service-name>:5443/ws</li>
	<li>wss://&lt;xmpp-service-name>/ws</li>
	<li>ws://&lt;xmpp-service-name>/ws</li>
  </ul>

  <p>TODO: Use implicit endpoints only if no other endpoints were
  discovered?</p>

</section1>

<section1 topic='Implementation Notes' anchor='impl'>

  <p>Implementations should note that due this XEP, the collection of
  potential endpoints may contain duplicates. This is because the
  implicit WebSocket connection endpoints defined herein may match the
  ones that where discovered (RFC 7395 § 4, XEP-0156). Implementations
  may want to ensure that no such duplicates exist.</p>

  <p>Furthermore, implementations attempting to connect to the
  discovered endpoints serially, as opposed to concurrently, may use
  the implicit endpoints only as last resort.</p>

</section1>

<section1 topic='Security Considerations' anchor='security'>

  <p>Since the implicit WebSocket connection endpoints are defined to
  include the XMPP service name, the verification required when using
  the secured variant of the WebSocket transport provides the
  necessary security.</p>

</section1>

<section1 topic='IANA Considerations' anchor='iana'>

  <p>This document requires no interaction with &IANA;.</p>

</section1>

<section1 topic='XMPP Registrar Considerations' anchor='registrar'>

  <p>This document requires no interaction with the XMPP registrar.</p>

</section1>

<section1 topic='XML Schema' anchor='schema'>

  <p>No XML schema specification is required, as this XEP does not
  specify any XML data.</p>

</section1>

</xep>