<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.1" version="1.1">
  <file original="NoName" source-language="en" datatype="plaintext" target-language="zh_Hans">
    <body>
      <trans-unit xml:space="preserve" approved="no" id="ee42983a169cde22">
        <source>Messages</source>
        <target state="translated">消息</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">12</context>
        </context-group>
        <note from="developer">type: section title</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="dca5c7b30ee51156">
        <source>Once a websocket session is established, messages can be sent unsolicited by either peer at any time. A message is made up of one or more ['messages frames]. Each frame is prefixed with the size of the payload in bytes, followed by the data. A frame also contains a flag (called 'fin') indicating whether or not it is the last frame of the message. When a message is made up from only one frame, it is possible to know immediately what the size of the message will be. Otherwise, the total size of the message can only be determined once the last frame is received.</source>
        <target state="translated">WebSocket 会话建立后，任何一端都可以随时主动发送消息。每条消息由一个或多个消息帧组成。每个帧的前部是有效载荷的字节长度，随后是数据内容。帧还包含一个名为 fin 的标志，用于标识该帧是否为消息的最后一帧。如果消息只由一个帧构成，则可以立即获知消息大小。否则，消息的总大小只能在接收到最后一帧时才能确定。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">14</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="44cde25135a9b415">
        <source>The boundaries between frames of a multi-frame message are not not considered part of the message. Intermediaries such as proxies which forward the websocket traffic are free to "reframe" (split frames and combine them) the message in arbitrary ways. These intermediaries include Beast, which can reframe messages automatically in some cases depending on the options set on the stream.</source>
        <target state="translated">多帧消息中，各帧的边界不属于消息内容的一部分。像代理这类转发 WebSocket 流量的中间节点，可以自由地对消息进行“重帧处理”（即拆分或合并帧）。Beast 也属于这类中间节点，它会根据流上配置的选项，在某些场景下自动重帧消息。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">23</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="97a09cb183239c80">
        <source>An algorithm should never depend on the way that incoming or outgoing</source>
        <target state="translated">算法不应依赖入站或出站消息的帧结构方式。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">30</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="0a9ff55560703eda">
        <source>Messages can be either text or binary. A message sent as text must contain consist of valid utf8, while a message sent as binary may contain arbitrary data. In addition to message frames, websocket provides ['control frames] in the form of ping, pong, and close messages which have a small upper limit on their payload size. Depending on how a message is framed, control frames may have more opportunities to be sent in-between.</source>
        <target state="translated">消息可以是文本类型或二进制类型。以文本形式发送的消息必须包含有效的 UTF-8 编码，而以二进制形式发送的消息则可以包含任意数据。除了消息帧之外，WebSocket 还提供控制帧，包括 ping、pong 和 close 消息，这些控制帧的有效载荷大小有较小的上限限制。根据消息的帧结构方式，控制帧可能有更多的机会在传输间隙发送。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">34</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="86dcc1f11dfdc692">
        <source>Sending</source>
        <target state="translated">发送</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">41</context>
        </context-group>
        <note from="developer">type: heading</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="2f311bad9ee1583e">
        <source>These stream members are used to write websocket messages:</source>
        <target state="translated">以下流成员函数用于写入 WebSocket 消息：</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">43</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="83b79d4d351b659e">
        <source>WebSocket Stream Write Operations</source>
        <target state="translated">WebSocket 流写入操作</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">45</context>
        </context-group>
        <note from="developer">type: table title</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="45">
        <source>Function</source>
        <target state="translated">函数</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">45</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="45">
        <source>Description</source>
        <target state="translated">描述</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">45</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="fcf7b79c7629eee7">
        <source>[link beast.ref.boost__beast__websocket__stream.write.overload2 `write`], [link beast.ref.boost__beast__websocket__stream.async_write `async_write`]</source>
        <target state="translated">[link beast.ref.boost__beast__websocket__stream.write.overload2 `write`], [link beast.ref.boost__beast__websocket__stream.async_write `async_write`]</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">45</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="56316a7e6cb0d187">
        <source>Send a buffer sequence as a complete message.</source>
        <target state="translated">将缓冲区序列作为完整消息发送。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">45</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="764e7253ebee677e">
        <source>[link beast.ref.boost__beast__websocket__stream.write_some.overload2 `write_some`], [link beast.ref.boost__beast__websocket__stream.async_write_some `async_write_some`]</source>
        <target state="translated">[link beast.ref.boost__beast__websocket__stream.write_some.overload2 `write_some`], [link beast.ref.boost__beast__websocket__stream.async_write_some `async_write_some`]</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">45</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="253cd3f06b26f62b">
        <source>Send a buffer sequence as part of a message.</source>
        <target state="translated">将缓冲区序列作为消息的一部分发送。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">45</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="cda5bb2872b7ec4d">
        <source>This example shows how to send a buffer sequence as a complete message.</source>
        <target state="translated">本示例展示如何将缓冲区序列作为完整消息发送。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">63</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="5c2825f3933bd8e1">
        <source>The same message could be sent in two or more frames thusly.</source>
        <target state="translated">同一消息也可以通过两个或多个帧来发送，如下所示：</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">67</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="90f9305e11335e54">
        <source>Receiving</source>
        <target state="translated">接受</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">69</context>
        </context-group>
        <note from="developer">type: heading</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="50deaf0e1af5560d">
        <source>WebSocket Stream Read Operations</source>
        <target state="translated">WebSocket 流读取操作</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table title</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="71">
        <source>Function</source>
        <target state="translated">函数</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="71">
        <source>Description</source>
        <target state="translated">描述</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="ce46a6fcf1fd68bf">
        <source>[link beast.ref.boost__beast__websocket__stream.read.overload2 `read`], [link beast.ref.boost__beast__websocket__stream.async_read `async_read`]</source>
        <target state="translated">[link beast.ref.boost__beast__websocket__stream.read.overload2 `read`], [link beast.ref.boost__beast__websocket__stream.async_read `async_read`]</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="6e2147a9df352116">
        <source>Read a complete message into a __DynamicBuffer__.</source>
        <target state="translated">将完整消息读入 __DynamicBuffer__。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="ac6f47ee38f92a06">
        <source>[link beast.ref.boost__beast__websocket__stream.read_some.overload2 `read_some`], [link beast.ref.boost__beast__websocket__stream.async_read_some.overload1 `async_read_some`]</source>
        <target state="translated">[link beast.ref.boost__beast__websocket__stream.read_some.overload2 `read_some`], [link beast.ref.boost__beast__websocket__stream.async_read_some.overload1 `async_read_some`]</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="c4a8b6703432ccf3">
        <source>Read part of a message into a __DynamicBuffer__.</source>
        <target state="translated">将消息的部分内容读入 __DynamicBuffer__。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="10d6f0fac1010fa5">
        <source>[link beast.ref.boost__beast__websocket__stream.read_some.overload4 `read_some`], [link beast.ref.boost__beast__websocket__stream.async_read_some.overload2 `async_read_some`]</source>
        <target state="translated">[link beast.ref.boost__beast__websocket__stream.read_some.overload4 `read_some`], [link beast.ref.boost__beast__websocket__stream.async_read_some.overload2 `async_read_some`]</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="e1f7c24bc85891b0">
        <source>Read part of a message into a __MutableBufferSequence__.</source>
        <target state="translated">将消息的部分内容读入 MutableBufferSequence。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">71</context>
        </context-group>
        <note from="developer">type: table cell</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="c19354e0b49f6b5a">
        <source>After the WebSocket handshake is accomplished, callers may send and receive messages using the message oriented interface. This interface requires that all of the buffers representing the message are known ahead of time:</source>
        <target state="translated">完成 WebSocket 握手后，调用方可以使用面向消息的接口收发消息。该接口要求表示消息的所有缓冲区必须事先已知：</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">96</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="d879da2cd18a6701">
        <source>Frames</source>
        <target state="translated">消息帧</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">108</context>
        </context-group>
        <note from="developer">type: heading</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="996e24dcafe06089">
        <source>Some use-cases make it impractical or impossible to buffer the entire message ahead of time:</source>
        <target state="translated">某些场景下，提前将整个消息缓冲起来并不现实或不可行：</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">110</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="75464c35df5cd795">
        <source>* Streaming multimedia to an endpoint.
* Sending a message that does not fit in memory at once.
* Providing incremental results as they become available.</source>
        <target state="translated">* 将流式多媒体数据发送到终端。
* 发送无法一次性装入内存的消息。
* 在结果可用时逐步提供。</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">113</context>
        </context-group>
        <note from="developer">type: list</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="a462c37c4be10ee4">
        <source>For these cases, the partial data oriented interface may be used. This example reads and echoes a complete message using this interface:</source>
        <target state="translated">在这些情况下，可以使用面向部分数据的接口。以下示例使用该接口读取并回显完整消息：</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">117</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
    </body>
  </file>
</xliff>
