[html5] r5175 - [e] (0) Clarify what clients and servers are for conformance in Web Sockets.

whatwg at whatwg.org whatwg at whatwg.org
Wed Jul 21 14:24:16 PDT 2010


Author: ianh
Date: 2010-07-21 14:24:15 -0700 (Wed, 21 Jul 2010)
New Revision: 5175

Modified:
   complete.html
   source
Log:
[e] (0) Clarify what clients and servers are for conformance in Web Sockets.

Modified: complete.html
===================================================================
--- complete.html	2010-07-21 07:05:56 UTC (rev 5174)
+++ complete.html	2010-07-21 21:24:15 UTC (rev 5175)
@@ -1051,39 +1051,39 @@
          <li><a href=#security-model><span class=secno>10.3.4.1.6 </span>Security model</a></li>
          <li><a href=#relationship-to-tcp-and-http><span class=secno>10.3.4.1.7 </span>Relationship to TCP and HTTP</a></li>
          <li><a href=#establishing-a-connection><span class=secno>10.3.4.1.8 </span>Establishing a connection</a></li>
-         <li><a href=#subprotocols-using-the-websocket-protocol><span class=secno>10.3.4.1.9 </span>Subprotocols using the WebSocket protocol</a></li>
-         <li><a href=#terminology-1><span class=secno>10.3.4.1.10 </span>Terminology</a></ol></li>
-       <li><a href=#websocket-urls><span class=secno>10.3.4.2 </span>WebSocket URLs</a>
+         <li><a href=#subprotocols-using-the-websocket-protocol><span class=secno>10.3.4.1.9 </span>Subprotocols using the WebSocket protocol</a></ol></li>
+       <li><a href=#terminology-1><span class=secno>10.3.4.2 </span>Terminology</a></li>
+       <li><a href=#websocket-urls><span class=secno>10.3.4.3 </span>WebSocket URLs</a>
         <ol>
-         <li><a href=#parsing-websocket-urls><span class=secno>10.3.4.2.1 </span>Parsing WebSocket URLs</a></li>
-         <li><a href=#constructing-websocket-urls><span class=secno>10.3.4.2.2 </span>Constructing WebSocket URLs</a></ol></li>
-       <li><a href=#client-side-requirements><span class=secno>10.3.4.3 </span>Client-side requirements</a>
+         <li><a href=#parsing-websocket-urls><span class=secno>10.3.4.3.1 </span>Parsing WebSocket URLs</a></li>
+         <li><a href=#constructing-websocket-urls><span class=secno>10.3.4.3.2 </span>Constructing WebSocket URLs</a></ol></li>
+       <li><a href=#client-side-requirements><span class=secno>10.3.4.4 </span>Client-side requirements</a>
         <ol>
-         <li><a href=#opening-handshake-0><span class=secno>10.3.4.3.1 </span>Opening handshake</a></li>
-         <li><a href=#data-framing><span class=secno>10.3.4.3.2 </span>Data framing</a></li>
-         <li><a href=#handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.3.3 </span>Handling errors in UTF-8 from the server</a></ol></li>
-       <li><a href=#server-side-requirements><span class=secno>10.3.4.4 </span>Server-side requirements</a>
+         <li><a href=#opening-handshake-0><span class=secno>10.3.4.4.1 </span>Opening handshake</a></li>
+         <li><a href=#data-framing><span class=secno>10.3.4.4.2 </span>Data framing</a></li>
+         <li><a href=#handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.4.3 </span>Handling errors in UTF-8 from the server</a></ol></li>
+       <li><a href=#server-side-requirements><span class=secno>10.3.4.5 </span>Server-side requirements</a>
         <ol>
-         <li><a href="#reading-the-client's-opening-handshake"><span class=secno>10.3.4.4.1 </span>Reading the client's opening handshake</a></li>
-         <li><a href="#sending-the-server's-opening-handshake"><span class=secno>10.3.4.4.2 </span>Sending the server's opening handshake</a></li>
-         <li><a href=#ws-sd-framing><span class=secno>10.3.4.4.3 </span>Data framing</a></li>
-         <li><a href=#handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.4.4 </span>Handling errors in UTF-8 from the client</a></ol></li>
-       <li><a href=#closing-the-connection><span class=secno>10.3.4.5 </span>Closing the connection</a>
+         <li><a href="#reading-the-client's-opening-handshake"><span class=secno>10.3.4.5.1 </span>Reading the client's opening handshake</a></li>
+         <li><a href="#sending-the-server's-opening-handshake"><span class=secno>10.3.4.5.2 </span>Sending the server's opening handshake</a></li>
+         <li><a href=#ws-sd-framing><span class=secno>10.3.4.5.3 </span>Data framing</a></li>
+         <li><a href=#handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.5.4 </span>Handling errors in UTF-8 from the client</a></ol></li>
+       <li><a href=#closing-the-connection><span class=secno>10.3.4.6 </span>Closing the connection</a>
         <ol>
-         <li><a href=#client-initiated-closure><span class=secno>10.3.4.5.1 </span>Client-initiated closure</a></li>
-         <li><a href=#server-initiated-closure><span class=secno>10.3.4.5.2 </span>Server-initiated closure</a></li>
-         <li><a href=#closure><span class=secno>10.3.4.5.3 </span>Closure</a></ol></li>
-       <li><a href=#security-considerations><span class=secno>10.3.4.6 </span>Security considerations</a></li>
-       <li><a href=#iana-considerations-0><span class=secno>10.3.4.7 </span>IANA considerations</a>
+         <li><a href=#client-initiated-closure><span class=secno>10.3.4.6.1 </span>Client-initiated closure</a></li>
+         <li><a href=#server-initiated-closure><span class=secno>10.3.4.6.2 </span>Server-initiated closure</a></li>
+         <li><a href=#closure><span class=secno>10.3.4.6.3 </span>Closure</a></ol></li>
+       <li><a href=#security-considerations><span class=secno>10.3.4.7 </span>Security considerations</a></li>
+       <li><a href=#iana-considerations-0><span class=secno>10.3.4.8 </span>IANA considerations</a>
         <ol>
-         <li><a href=#registration-of-ws:-scheme><span class=secno>10.3.4.7.1 </span>Registration of <code title="">ws:</code> scheme</a></li>
-         <li><a href=#registration-of-wss:-scheme><span class=secno>10.3.4.7.2 </span>Registration of <code title="">wss:</code> scheme</a></li>
-         <li><a href=#registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.7.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</a></li>
-         <li><a href=#sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.7.4 </span><code>Sec-WebSocket-Key1</code> and <code>Sec-WebSocket-Key2</code></a></li>
-         <li><a href=#sec-websocket-location><span class=secno>10.3.4.7.5 </span><code>Sec-WebSocket-Location</code></a></li>
-         <li><a href=#sec-websocket-origin><span class=secno>10.3.4.7.6 </span><code>Sec-WebSocket-Origin</code></a></li>
-         <li><a href=#sec-websocket-protocol><span class=secno>10.3.4.7.7 </span><code>Sec-WebSocket-Protocol</code></a></ol></li>
-       <li><a href=#using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.8 </span>Using the WebSocket protocol from other specifications</a></ol></ol></li>
+         <li><a href=#registration-of-ws:-scheme><span class=secno>10.3.4.8.1 </span>Registration of <code title="">ws:</code> scheme</a></li>
+         <li><a href=#registration-of-wss:-scheme><span class=secno>10.3.4.8.2 </span>Registration of <code title="">wss:</code> scheme</a></li>
+         <li><a href=#registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.8.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</a></li>
+         <li><a href=#sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.8.4 </span><code>Sec-WebSocket-Key1</code> and <code>Sec-WebSocket-Key2</code></a></li>
+         <li><a href=#sec-websocket-location><span class=secno>10.3.4.8.5 </span><code>Sec-WebSocket-Location</code></a></li>
+         <li><a href=#sec-websocket-origin><span class=secno>10.3.4.8.6 </span><code>Sec-WebSocket-Origin</code></a></li>
+         <li><a href=#sec-websocket-protocol><span class=secno>10.3.4.8.7 </span><code>Sec-WebSocket-Protocol</code></a></ol></li>
+       <li><a href=#using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.9 </span>Using the WebSocket protocol from other specifications</a></ol></ol></li>
    <li><a href=#web-messaging><span class=secno>10.4 </span>Cross-document messaging</a>
     <ol>
      <li><a href=#introduction-8><span class=secno>10.4.1 </span>Introduction</a></li>
@@ -72709,7 +72709,7 @@
 
 
 
-  <h6 id=terminology-1><span class=secno>10.3.4.1.10 </span>Terminology</h6>
+  <h5 id=terminology-1><span class=secno>10.3.4.2 </span>Terminology</h5>
 
 
   <p>When an implementation is required to <i>send</i> data as part of
@@ -72718,9 +72718,9 @@
   packets.</p>
 
 
-  <h5 id=websocket-urls><span class=secno>10.3.4.2 </span>WebSocket URLs</h5>
+  <h5 id=websocket-urls><span class=secno>10.3.4.3 </span>WebSocket URLs</h5>
 
-  <h6 id=parsing-websocket-urls><span class=secno>10.3.4.2.1 </span>Parsing WebSocket URLs</h6>
+  <h6 id=parsing-websocket-urls><span class=secno>10.3.4.3.1 </span>Parsing WebSocket URLs</h6>
 
   <p>The steps to <dfn id="parse-a-websocket-url's-components">parse a WebSocket URL's components</dfn> from
   a string <var title="">url</var> are as follows. These steps return
@@ -72784,7 +72784,7 @@
    <li><p>Return <var title="">host</var>, <var title="">port</var>,
    <var title="">resource name</var>, and <var title="">secure</var>.</li>
 
-  </ol><h6 id=constructing-websocket-urls><span class=secno>10.3.4.2.2 </span>Constructing WebSocket URLs</h6>
+  </ol><h6 id=constructing-websocket-urls><span class=secno>10.3.4.3.2 </span>Constructing WebSocket URLs</h6>
 
   <p>The steps to <dfn id=construct-a-websocket-url>construct a WebSocket URL</dfn> from a <var title="">host</var>, a <var title="">port</var>, a <var title="">resource name</var>, and a <var title="">secure</var> flag,
   are as follows:</p>
@@ -72805,17 +72805,24 @@
 
    <li>Return <var title="">url</var>.</li>
 
-  </ol><h5 id=client-side-requirements><span class=secno>10.3.4.3 </span>Client-side requirements</h5>
+  </ol><h5 id=client-side-requirements><span class=secno>10.3.4.4 </span>Client-side requirements</h5>
 
   <p><i>This section only applies to user agents, not to
   servers.</i></p>
 
+  <p>User agents running in controlled environments, e.g. browsers on
+  mobile handsets tied to specific carriers, may offload the
+  management of the connection to another agent on the network. In
+  such a situation, the user agent for the purposes of conformance is
+  considered to include both the handset software and any such
+  agents.</p>
+
   <p class=note>This specification doesn't currently define a limit
   to the number of simultaneous connections that a client can
   establish to a server.</p>
 
 
-  <h6 id=opening-handshake-0><span class=secno>10.3.4.3.1 </span>Opening handshake</h6>
+  <h6 id=opening-handshake-0><span class=secno>10.3.4.4.1 </span>Opening handshake</h6>
 
   <p>When the user agent is to <dfn id=establish-a-websocket-connection>establish a WebSocket
   connection</dfn> to a host <var title="">host</var>, on a port <var title="">port</var>, from an origin whose <a href=#ascii-serialization-of-an-origin title="ASCII
@@ -73651,7 +73658,7 @@
 
    </li>
 
-  </ol><h6 id=data-framing><span class=secno>10.3.4.3.2 </span>Data framing</h6>
+  </ol><h6 id=data-framing><span class=secno>10.3.4.4.2 </span>Data framing</h6>
 
   <p>Once a <a href=#websocket-connection-is-established>WebSocket connection is established</a>, the user
   agent must run through the following state machine for the bytes
@@ -73836,7 +73843,7 @@
   data. -->
 
 
-  <h6 id=handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.3.3 </span>Handling errors in UTF-8 from the server</h6>
+  <h6 id=handling-errors-in-utf-8-from-the-server><span class=secno>10.3.4.4.3 </span>Handling errors in UTF-8 from the server</h6>
 
   <p>When a client is to interpret a byte stream as UTF-8 but finds
   that the byte stream is not in fact a valid UTF-8 stream, then any
@@ -73845,13 +73852,31 @@
 
 
 
-  <h5 id=server-side-requirements><span class=secno>10.3.4.4 </span>Server-side requirements</h5>
+  <h5 id=server-side-requirements><span class=secno>10.3.4.5 </span>Server-side requirements</h5>
 
   <p><i>This section only applies to servers.</i></p>
 
+  <p>Servers may offload the management of the connection to other
+  agents on the network, for example load balancers and reverse
+  proxies. In such a situation, the server for the purposes of
+  conformance is considered to include all parts of the server-side
+  infrastructure from the first device to terminate the TCP connection
+  all the way to the server that processes requests and sends
+  responses.</p>
 
-  <h6 id="reading-the-client's-opening-handshake"><span class=secno>10.3.4.4.1 </span>Reading the client's opening handshake</h6>
+  <div class=example>
 
+   <p>For example, a data center might have a server that responds to
+   Web Socket requests with an appropriate handshake, and then passes
+   the connection to another server to actually process the data
+   frames. For the purposes of this specification, the "server" is the
+   combination of both computers.</p>
+
+  </div>
+
+
+  <h6 id="reading-the-client's-opening-handshake"><span class=secno>10.3.4.5.1 </span>Reading the client's opening handshake</h6>
+
   <p>When a client starts a WebSocket connection, it sends its part of
   the opening handshake. The server must parse at least part of this
   handshake in order to obtain the necessary information to generate
@@ -74037,7 +74062,7 @@
   doesn't support.</p>
 
 
-  <h6 id="sending-the-server's-opening-handshake"><span class=secno>10.3.4.4.2 </span>Sending the server's opening handshake</h6>
+  <h6 id="sending-the-server's-opening-handshake"><span class=secno>10.3.4.5.2 </span>Sending the server's opening handshake</h6>
 
   <p>When a client establishes a WebSocket connection to a server, the
   server must run the following steps.</p>
@@ -74338,7 +74363,7 @@
 
 
 
-  <h6 id=ws-sd-framing><span class=secno>10.3.4.4.3 </span>Data framing</h6>
+  <h6 id=ws-sd-framing><span class=secno>10.3.4.5.3 </span>Data framing</h6>
 
   <p>The server must run through the following steps to process the
   bytes sent by the client.  If at any point during these steps a read
@@ -74461,7 +74486,7 @@
 
 
 
-  <h6 id=handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.4.4 </span>Handling errors in UTF-8 from the client</h6>
+  <h6 id=handling-errors-in-utf-8-from-the-client><span class=secno>10.3.4.5.4 </span>Handling errors in UTF-8 from the client</h6>
 
   <p>When a server is to interpret a byte stream as UTF-8 but finds
   that the byte stream is not in fact a valid UTF-8 stream, behavior
@@ -74473,9 +74498,9 @@
 
 
 
-  <h5 id=closing-the-connection><span class=secno>10.3.4.5 </span>Closing the connection</h5>
+  <h5 id=closing-the-connection><span class=secno>10.3.4.6 </span>Closing the connection</h5>
 
-  <h6 id=client-initiated-closure><span class=secno>10.3.4.5.1 </span>Client-initiated closure</h6>
+  <h6 id=client-initiated-closure><span class=secno>10.3.4.6.1 </span>Client-initiated closure</h6>
 
   <p>Certain algorithms require the user agent to <dfn id=fail-the-websocket-connection>fail the
   WebSocket connection</dfn>. To do so, the user agent must
@@ -74510,7 +74535,7 @@
    <li>A WebSocket server that abruptly closed the connection after
    successfully completing the opening handshake.</li>
 
-  </ul><h6 id=server-initiated-closure><span class=secno>10.3.4.5.2 </span>Server-initiated closure</h6>
+  </ul><h6 id=server-initiated-closure><span class=secno>10.3.4.6.2 </span>Server-initiated closure</h6>
 
   <p>Certain algorithms require or recommend that the server
   <dfn id=abort-the-websocket-connection>abort the WebSocket connection</dfn> during the opening
@@ -74518,7 +74543,7 @@
   WebSocket connection</a>.</p>
 
 
-  <h6 id=closure><span class=secno>10.3.4.5.3 </span>Closure</h6>
+  <h6 id=closure><span class=secno>10.3.4.6.3 </span>Closure</h6>
 
   <p>To <dfn id=close-the-websocket-connection>close the WebSocket connection</dfn>, the user agent or
   server must close the TCP connection, using whatever mechanism
@@ -74537,7 +74562,7 @@
 
 
 
-  <h5 id=security-considerations><span class=secno>10.3.4.6 </span>Security considerations</h5>
+  <h5 id=security-considerations><span class=secno>10.3.4.7 </span>Security considerations</h5>
 
   <p>While this protocol is intended to be used by scripts in Web
   pages, it can also be used directly by hosts. Such hosts are acting
@@ -74574,9 +74599,9 @@
   attacker could inject arbitrary frames into the data stream.</p>
 
 
-  <h5 id=iana-considerations-0><span class=secno>10.3.4.7 </span>IANA considerations</h5>
+  <h5 id=iana-considerations-0><span class=secno>10.3.4.8 </span>IANA considerations</h5>
 
-  <h6 id=registration-of-ws:-scheme><span class=secno>10.3.4.7.1 </span>Registration of <code title="">ws:</code> scheme</h6>
+  <h6 id=registration-of-ws:-scheme><span class=secno>10.3.4.8.1 </span>Registration of <code title="">ws:</code> scheme</h6>
 
   <p>A <code title="">ws:</code> URL identifies a WebSocket server
   and resource name.</p>
@@ -74639,7 +74664,7 @@
    <dt>References.</dt>
    <dd>This document.</dd>
 
-  </dl><h6 id=registration-of-wss:-scheme><span class=secno>10.3.4.7.2 </span>Registration of <code title="">wss:</code> scheme</h6>
+  </dl><h6 id=registration-of-wss:-scheme><span class=secno>10.3.4.8.2 </span>Registration of <code title="">wss:</code> scheme</h6>
 
   <p>A <code title="">wss:</code> URL identifies a WebSocket server
   and resource name, and indicates that traffic over that connection
@@ -74702,7 +74727,7 @@
    <dt>References.</dt>
    <dd>This document.</dd>
 
-  </dl><h6 id=registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.7.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</h6>
+  </dl><h6 id=registration-of-the-websocket-http-upgrade-keyword><span class=secno>10.3.4.8.3 </span>Registration of the "<code title="">WebSocket</code>" HTTP Upgrade keyword</h6>
 
   <dl><dt>Name of token.</dt>
    <dd>WebSocket</dd>
@@ -74716,7 +74741,7 @@
    <dt>References.</dt>
    <dd>This document.</dd>
 
-  </dl><h6 id=sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.7.4 </span><dfn title=http-sec-websocket-key1><code>Sec-WebSocket-Key1</code></dfn> and <dfn title=http-sec-websocket-key2><code>Sec-WebSocket-Key2</code></dfn></h6>
+  </dl><h6 id=sec-websocket-key1-and-sec-websocket-key2><span class=secno>10.3.4.8.4 </span><dfn title=http-sec-websocket-key1><code>Sec-WebSocket-Key1</code></dfn> and <dfn title=http-sec-websocket-key2><code>Sec-WebSocket-Key2</code></dfn></h6>
 
   <p>This section describes two header fields for registration in the
   Permanent Message Header Field Registry.  <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74758,7 +74783,7 @@
   send data to unsuspecting WebSocket servers.</p>
 
 
-  <h6 id=sec-websocket-location><span class=secno>10.3.4.7.5 </span><dfn title=http-sec-websocket-location><code>Sec-WebSocket-Location</code></dfn></h6>
+  <h6 id=sec-websocket-location><span class=secno>10.3.4.8.5 </span><dfn title=http-sec-websocket-location><code>Sec-WebSocket-Location</code></dfn></h6>
 
   <p>This section describes a header field for registration in the
   Permanent Message Header Field Registry.  <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74786,7 +74811,7 @@
   path are correct.</p>
 
 
-  <h6 id=sec-websocket-origin><span class=secno>10.3.4.7.6 </span><dfn title=http-sec-websocket-origin><code>Sec-WebSocket-Origin</code></dfn></h6>
+  <h6 id=sec-websocket-origin><span class=secno>10.3.4.8.6 </span><dfn title=http-sec-websocket-origin><code>Sec-WebSocket-Origin</code></dfn></h6>
 
   <p>This section describes a header field for registration in the
   Permanent Message Header Field Registry.  <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74813,7 +74838,7 @@
   connection.</p>
 
 
-  <h6 id=sec-websocket-protocol><span class=secno>10.3.4.7.7 </span><dfn title=http-sec-websocket-protocol><code>Sec-WebSocket-Protocol</code></dfn></h6>
+  <h6 id=sec-websocket-protocol><span class=secno>10.3.4.8.7 </span><dfn title=http-sec-websocket-protocol><code>Sec-WebSocket-Protocol</code></dfn></h6>
 
   <p>This section describes a header field for registration in the
   Permanent Message Header Field Registry.  <a href=#refsRFC3864>[RFC3864]</a></p>
@@ -74842,7 +74867,7 @@
 
 
 
-  <h5 id=using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.8 </span>Using the WebSocket protocol from other specifications</h5>
+  <h5 id=using-the-websocket-protocol-from-other-specifications><span class=secno>10.3.4.9 </span>Using the WebSocket protocol from other specifications</h5>
 
   <p>The WebSocket protocol is intended to be used by another
   specification to provide a generic mechanism for dynamic

Modified: source
===================================================================
--- source	2010-07-21 07:05:56 UTC (rev 5174)
+++ source	2010-07-21 21:24:15 UTC (rev 5175)
@@ -81782,7 +81782,7 @@
   <!--BOILERPLATE middle-ietf-conformance-->
 <!--START complete--><!--START epub-->
 
-  <h6>Terminology</h6>
+  <h5>Terminology</h5>
 
 <!--END complete--><!--END epub-->
   <p><dfn title="converted to ASCII lowercase">Converting a string to
@@ -81935,6 +81935,13 @@
   <p><i>This section only applies to user agents, not to
   servers.</i></p>
 
+  <p>User agents running in controlled environments, e.g. browsers on
+  mobile handsets tied to specific carriers, may offload the
+  management of the connection to another agent on the network. In
+  such a situation, the user agent for the purposes of conformance is
+  considered to include both the handset software and any such
+  agents.</p>
+
   <p class="note">This specification doesn't currently define a limit
   to the number of simultaneous connections that a client can
   establish to a server.</p>
@@ -83125,7 +83132,25 @@
 
   <p><i>This section only applies to servers.</i></p>
 
+  <p>Servers may offload the management of the connection to other
+  agents on the network, for example load balancers and reverse
+  proxies. In such a situation, the server for the purposes of
+  conformance is considered to include all parts of the server-side
+  infrastructure from the first device to terminate the TCP connection
+  all the way to the server that processes requests and sends
+  responses.</p>
 
+  <div class="example">
+
+   <p>For example, a data center might have a server that responds to
+   Web Socket requests with an appropriate handshake, and then passes
+   the connection to another server to actually process the data
+   frames. For the purposes of this specification, the "server" is the
+   combination of both computers.</p>
+
+  </div>
+
+
   <h6>Reading the client's opening handshake</h6>
 
   <p>When a client starts a WebSocket connection, it sends its part of




More information about the Commit-Watchers mailing list