<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">frame</rt></rubyb></dfn>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続の確立</anchor>の後に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocketサーバー</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocketクライアント</anchor>との間でやり取りされる情報の単位です。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <strong><cite xml:lang="en">RFC 6455 - The WebSocket Protocol</cite> (<time>2015-03-11 20:42:50 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6455#section-5">https://tools.ietf.org/html/rfc6455#section-5</anchor-external></strong><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <cite xml:lang="en">RFC 6455 - The WebSocket Protocol</cite> (<time>2015-03-11 20:42:50 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6455#section-5.8">https://tools.ietf.org/html/rfc6455#section-5.8</anchor-external></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <cite xml:lang="en">RFC 6455 - The WebSocket Protocol</cite> (<time>2015-03-11 20:42:50 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6455#section-10.3">https://tools.ietf.org/html/rfc6455#section-10.3</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <cite xml:lang="en">RFC 6455 - The WebSocket Protocol</cite> (<time>2015-03-11 20:42:50 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6455#section-11.8">https://tools.ietf.org/html/rfc6455#section-11.8</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> <cite>WebSocket Protocol Registries</cite> (<time>2015-03-06 13:09:47 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.iana.org/assignments/websocket/websocket.xml#opcode">https://www.iana.org/assignments/websocket/websocket.xml#opcode</anchor-external></li></ul></refs></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>は、次のような構造です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。
可変長の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>と、可変長のデータで構成されます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の長さとデータの長さは、どちらも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値により決まります。</p><figure class="packet"><dl><dt>width</dt><dd>32</dd></dl><ol><li>1 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></li><li>1 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV1</anchor></li><li>1 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV2</anchor></li><li>1 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV3</anchor></li><li>4 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></li><li>1 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor></li><li>23 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload長</anchor></li><li>32 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー</anchor></li><li>32... <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Payload Data</anchor></li></ol></figure><figure class="list members"><figcaption><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></figcaption><dl><dt><dfn><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>の最後の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">fragment</rt></rubyb>であるかどうかを示します。
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code> は最後でないこと、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code> は最後であることを表します。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV1</f></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">WebSocket拡張</title></anchor>により規定される場合を除き、 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV2</f></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">WebSocket拡張</title></anchor>により規定される場合を除き、 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV3</f></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">WebSocket拡張</title></anchor>により規定される場合を除き、 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。</dd><dt><dfn><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload data</anchor> の解釈を規定するものです。</dd><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">mask</rt></rubyb></dfn> (<dfn><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">frame-masking-key</anchor></code></dfn>)</dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload data</anchor> が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>されるかどうかを示します。
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>されていること、<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>されていないことを示します。</dd><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload長<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">payload length</rt></rubyb></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload data</anchor> の長さを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>単位で示します。</dd><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>マスクキー</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">masking key</rt></rubyb></dfn> (<dfn><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">frame-masking-key</anchor></code></dfn>)</dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>する際に使う32ビットの値です。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>ビットが <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code>
であれば、本欄が存在します。 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code> なら、存在しません。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張データ</f></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>により規定された長さと用途のデータです。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>がなければ長さ0です。</dd><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用データ<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">application data</rt></rubyb></dfn></dt><dd>
任意の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>のデータです。</dd></dl></figure></section><section><h1>opcode</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データフレーム</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非制御フレーム</anchor>) の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor> には、
次のものがあります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。<figure class="list short"><ul><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">継続フレーム</anchor></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキストフレーム</anchor></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</anchor></code> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイナリーフレーム</anchor></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">3</anchor></code> - 非制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">4</anchor></code> - 非制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">5</anchor></code> - 非制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">6</anchor></code> - 非制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">7</anchor></code> - 非制御フレームに予約</li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>制御フレーム</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">control frame</rt></rubyb></dfn>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor> には、次のものがあります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。<figure class="list short"><ul><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8</anchor></code> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Closeフレーム</anchor></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">9</anchor></code> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Pingフレーム</anchor></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">A</anchor></code> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Pongフレーム</anchor></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">B</anchor></code> - 制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">C</anchor></code> - 制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">D</anchor></code> - 制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">E</anchor></code> - 制御フレームに予約</li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">F</anchor></code> - 制御フレームに予約</li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御フレーム</anchor>は、状態を通信するために使うものです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> 予約された <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">WebSocket拡張</title></anchor>が使うことができます 
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;49</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor> には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IANA登録簿</anchor>があります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;65</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 未知の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</f> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">WebSocketフレーム</title></anchor>を受信した場合
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続失敗</anchor>としなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p></section><section><h1>payload</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payloadデータ<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">payload data</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張データ</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用データ</anchor>を指します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload長</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>単位の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payloadデータ</anchor>の長さを表すものです。
次のうち、最短の形を使わなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src><figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <code>0</code>-<code>125</code> なら、これが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload長</anchor>です。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <code>126</code> なら、次の2バイトが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload長</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">16ビット符号無し整数</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネットワークバイト順</anchor>) です。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <code>127</code> なら、次の8バイトが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload長</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号無し整数</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネットワークバイト順</anchor>) です。
ただし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最上位ビット</anchor>は <code>0</code> でなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。</li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> 従って最大長は2<sup>63</sup>-1バイトです。 (つまり 8388608 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TB</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">未満</anchor>まで表現できます。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御フレーム</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload長</anchor>は、125バイト<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以下</anchor>でなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> これらの規定に違反した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を受信した時にどう処理するべきかは不明です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> 最短形でない場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態符号</anchor>が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1002</anchor></code> で理由が <code>WebSocket Protocol Error</code>
の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Closeフレーム</anchor>を送信します。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は16ビット整数なら最短形でなくてもよく、
64ビット整数なら送信しないで接続を閉じます。
<time>2015-08-16T13:59:43.200Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> 値が 2<sup>32</sup>-1 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以下</anchor>なら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も受信しようと試みるようです。
しかし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は受信し続けた末にクラッシュ、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は途中で断念して <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RST</anchor></code>
するようです。 2<sup>32</sup> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>なら (64ビット整数で最上位ビットが立っている場合も)、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コンソール</anchor>に <code>Invalid frame header</code> と表示して
(<code class="DOMe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">error</anchor></code> イベントは無し) すぐに切断します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は <code class="DOMe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">error</anchor></code> イベントを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発火</anchor>してすぐに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">切断</anchor>します。 <time>2015-08-16T14:29:01.600Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御フレーム</anchor>なのに長さが125を超えていると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も <code class="DOMe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">error</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベント</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発火</anchor>し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Closeフレーム</anchor>を送信 (<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1002</anchor></code> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket Protocol Error</anchor></code>)、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続</anchor>を閉じます。 <time>2015-08-16T14:40:37.500Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> まとめると、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>の長さの決定は次のように行えます。<figure class="steps"><ol><li>次の2バイトを取得します。</li><li>長さを、取得した2バイト目の下位7ビットとします。</li><li>長さが 126 なら、<ol><li>次の2バイトを取得します。</li><li>長さを、ネットワークバイト順の16ビット符号無し整数として解釈した値に設定します。</li><li>長さが 126 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">未満</anchor>なら、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続失敗</anchor>とします。</li></ol></li><li>長さが 127 なら、<ol><li>次の8バイトを取得します。</li><li>長さを、ネットワークバイト順の64ビット符号無し整数として解釈した値に設定します。</li><li>長さが 2<sup>16</sup> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">未満</anchor>なら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続失敗</anchor>とします。</li></ol></li><li>長さが2<sup>63</sup>以上なら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続失敗</anchor>とします。</li><li>長さが実装の扱える範囲を超えていれば、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続失敗</anchor>とします。</li><li>制御フレームで、長さが125バイトを超えているなら、<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続失敗</anchor>とします。</li></ol></li><li>2バイト目の最上位ビットが立っていれば、<ol><li>次の32ビットを取得します。</li></ol></li></ol></figure></p></section><section><h1>マスク</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>は、<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>マスク</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">mask</rt></rubyb></dfn>する場合と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>しない場合があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>欄の値が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code> でなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">masking key</rt></rubyb>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">無作為</anchor>に選択した32ビット値です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>内の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー</anchor>欄に示されます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に送信するすべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を送信しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>する際に新鮮な値を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー</anchor>として選ばなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー</anchor>は予測不能である必要がありますから、
強い<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エントロピー</anchor>源から得なければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。
前の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>から以後の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー</anchor>を容易に予測できては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> これは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロキシ</anchor>等の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>の混乱を防ぐため、また<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セキュリティー</anchor>のために必要な措置です
<src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4086</anchor> に強い<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エントロピー</anchor>源についての議論があります <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>の適用と復元は、どちらも次の手順により行います <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 入力データの各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット</anchor>について、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 出力の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット</anchor> <var>i</var> は、入力のオクテット <var>i</var> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクデータ</anchor>のオクテット <var>i</var> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mod</anchor> 4 の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XOR</anchor> とします。</li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>されていない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を受信したら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続</anchor>を閉じなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。
この場合<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Close</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態符号</anchor>
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1002</anchor></code> で送信して構いません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を受信したら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続</anchor>を閉じなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。
この場合<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Close</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態符号</anchor>
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1002</anchor></code> で送信して構いません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft</anchor> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> ではなく公衆インターネットでもない限られた環境では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>しないことでパフォーマンスが向上するとして、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスクキー</anchor>を 0 とすることによりデータを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マスク</anchor>しないで送信するオプションを実装しています
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</anchor-internal></src>。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> <cite xml:lang="en"><strong>[</strong>MS-WSPE<strong>]</strong>: WebSocket Protocol Extensions</cite> (<time>2015-05-17 00:10:16 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://msdn.microsoft.com/en-us/library/hh553781.aspx">https://msdn.microsoft.com/en-us/library/hh553781.aspx</anchor-external></li></ul></refs></section><section><h1>断片化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片化<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">fragmentation</rt></rubyb></dfn>により、
送信開始時点で送信データの大きさがわからない場合でも送信開始できます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片化</anchor>を使って、送信データの末端を待たずに適度にバッファーにデータが溜まった時点で送信できます <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片化</anchor>は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>多重化</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">multiplexing</rt></rubyb>により単一の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続</anchor>を複数の大きなメッセージで共有するために使うことができます。
ただし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor> 本体では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">多重化</anchor>のための拡張は規定していません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片化</anchor>された(かもしれない)状態のものが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>と呼ばれるのに対し、
そのデータを結合したものが<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>メッセージ</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">message</rt></rubyb></dfn>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src> と呼ばれています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> 受信者は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片化</anchor>に対応しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> 1つのメッセージが単一<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>で表現される時は、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> が <code>1</code> に設定され <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> は <code>0</code> 以外となります
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="railroad"><ol><li>(<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> = <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code>, <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> ≠ <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>)</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> 1つのメッセージが複数<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>で表現される時は、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> が <code>0</code> に設定され <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> は <code>0</code> 以外となる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>、
0個以上の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code> に設定され <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code> に設定され <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>
のフレームの列となります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="railroad"><ol><li>(<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> = <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>, <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> ≠ <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>)</li><li>*<ol><li>(<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> = <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>, <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> = <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>)</li></ol></li><li>(<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> = <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code>, <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opcode</anchor></code> = <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor></code>)</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御フレーム</anchor>は、断片化しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御フレーム</anchor>の断片化状態を変更しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御フレーム</anchor>の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIN</anchor></code> が 0 の場合には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> でも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> でも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続</anchor>が閉じられます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態符号</anchor>が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1002</anchor></code> で理由が
<code>WebSocket Protocol Error</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Closeフレーム</anchor>を送信します。 <time>2015-08-17T07:12:56.800Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> 断片は、送信者が送信した順序で受信者に配送しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御フレーム</anchor>を他の断片化された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>間に注入しても構いません
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。受信者はこれを扱えなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> 大きなメッセージの転送中に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ping</anchor> の遅延が大きくなることを防ぐためです <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>により特に規定される場合を除き、
断片を他の断片化された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>間に注入しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> これら禁止規定に反した場合にどう処理するべきかは不明です。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>で特に規定される場合を除き、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor> (の境界) は意味を持ちません。
1つの大きなメッセージも、複数に分割された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を順に連結したものも、等価です。
送信者は任意の大きさに分割できます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>が適用されない場合や、
すべての適用される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>を理解し問題ないと判断できる場合には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を分割したり結合したりするかもしれません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV1</anchor></code>, <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV2</anchor></code>, <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSV3</anchor></code>
のいずれかが設定されているか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>が用いられていて、その意味を理解できなければ、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片化</anchor>の状態を変更しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket handshake</anchor> を見ていない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">断片化</anchor>の状態を変更しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> どういう状況でしょうか? <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続の確立</anchor>とそれ以後の処理を別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>で行う場合??</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張</anchor>によっては、各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>にのみ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張データ</anchor>を含められる、
最初の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>にのみ含められるといったような規定があるかもしれません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p></section><section><h1>受信</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocketメッセージ受信</anchor>を参照。</p></section></body></html>