msgid ""
msgstr ""
"Project-Id-Version: Chinese (Simplified Han script) (Boost Beast Translation "
"(zh_Hans))\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-26 17:54+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese (Simplified Han script) <https://"
"insights.cppalliance.org/weblate/projects/boost-beast-documentation-zh_Hans/"
"doc-qbk-06-websocket-04-messages-qbk/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 2026.5\n"

#. type: section title
#: 12
msgid "Messages"
msgstr "消息"

#. type: paragraph
#: 14
msgid ""
"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."
msgstr ""
"WebSocket 会话建立后，任何一端都可以随时主动发送消息。每条消息由一个或多个消"
"息帧组成。每个帧的前部是有效载荷的字节长度，随后是数据内容。帧还包含一个名为 "
"fin 的标志，用于标识该帧是否为消息的最后一帧。如果消息只由一个帧构成，则可以"
"立即获知消息大小。否则，消息的总大小只能在接收到最后一帧时才能确定。"

#. type: paragraph
#: 23
msgid ""
"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."
msgstr ""
"多帧消息中，各帧的边界不属于消息内容的一部分。像代理这类转发 WebSocket 流量的"
"中间节点，可以自由地对消息进行“重帧处理”（即拆分或合并帧）。Beast 也属于这类"
"中间节点，它会根据流上配置的选项，在某些场景下自动重帧消息。"

#. type: paragraph
#: 30
msgid "An algorithm should never depend on the way that incoming or outgoing"
msgstr "算法不应依赖入站或出站消息的帧结构方式。"

#. type: paragraph
#: 34
msgid ""
"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."
msgstr ""
"消息可以是文本类型或二进制类型。以文本形式发送的消息必须包含有效的 UTF-8 编码"
"，而以二进制形式发送的消息则可以包含任意数据。除了消息帧之外，WebSocket 还提"
"供控制帧，包括 ping、pong 和 close 消息，这些控制帧的有效载荷大小有较小的上限"
"限制。根据消息的帧结构方式，控制帧可能有更多的机会在传输间隙发送。"

#. type: heading
#: 41
msgid "Sending"
msgstr "发送"

#. type: paragraph
#: 43
msgid "These stream members are used to write websocket messages:"
msgstr "以下流成员函数用于写入 WebSocket 消息："

#. type: table title
#: 45
msgid "WebSocket Stream Write Operations"
msgstr "WebSocket 流写入操作"

#. type: table cell
#: 45
msgctxt "45"
msgid "Function"
msgstr "函数"

#. type: table cell
#: 45
msgctxt "45"
msgid "Description"
msgstr "描述"

#. type: table cell
#: 45
msgid ""
"[link beast.ref.boost__beast__websocket__stream.write.overload2 `write`], "
"[link beast.ref.boost__beast__websocket__stream.async_write `async_write`]"
msgstr ""
"[link beast.ref.boost__beast__websocket__stream.write.overload2 `write`], "
"[link beast.ref.boost__beast__websocket__stream.async_write `async_write`]"

#. type: table cell
#: 45
msgid "Send a buffer sequence as a complete message."
msgstr "将缓冲区序列作为完整消息发送。"

#. type: table cell
#: 45
msgid ""
"[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`]"
msgstr ""
"[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`]"

#. type: table cell
#: 45
msgid "Send a buffer sequence as part of a message."
msgstr "将缓冲区序列作为消息的一部分发送。"

#. type: paragraph
#: 63
msgid "This example shows how to send a buffer sequence as a complete message."
msgstr "本示例展示如何将缓冲区序列作为完整消息发送。"

#. type: paragraph
#: 67
msgid "The same message could be sent in two or more frames thusly."
msgstr "同一消息也可以通过两个或多个帧来发送，如下所示："

#. type: heading
#: 69
msgid "Receiving"
msgstr "接受"

#. type: table title
#: 71
msgid "WebSocket Stream Read Operations"
msgstr "WebSocket 流读取操作"

#. type: table cell
#: 71
msgctxt "71"
msgid "Function"
msgstr "函数"

#. type: table cell
#: 71
msgctxt "71"
msgid "Description"
msgstr "描述"

#. type: table cell
#: 71
msgid ""
"[link beast.ref.boost__beast__websocket__stream.read.overload2 `read`], "
"[link beast.ref.boost__beast__websocket__stream.async_read `async_read`]"
msgstr ""
"[link beast.ref.boost__beast__websocket__stream.read.overload2 `read`], "
"[link beast.ref.boost__beast__websocket__stream.async_read `async_read`]"

#. type: table cell
#: 71
msgid "Read a complete message into a __DynamicBuffer__."
msgstr "将完整消息读入 __DynamicBuffer__。"

#. type: table cell
#: 71
msgid ""
"[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`]"
msgstr ""
"[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`]"

#. type: table cell
#: 71
msgid "Read part of a message into a __DynamicBuffer__."
msgstr "将消息的部分内容读入 __DynamicBuffer__。"

#. type: table cell
#: 71
msgid ""
"[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`]"
msgstr ""
"[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`]"

#. type: table cell
#: 71
msgid "Read part of a message into a __MutableBufferSequence__."
msgstr "将消息的部分内容读入 MutableBufferSequence。"

#. type: paragraph
#: 96
msgid ""
"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:"
msgstr ""
"完成 WebSocket 握手后，调用方可以使用面向消息的接口收发消息。该接口要求表示消"
"息的所有缓冲区必须事先已知："

#. type: heading
#: 108
msgid "Frames"
msgstr "消息帧"

#. type: paragraph
#: 110
msgid ""
"Some use-cases make it impractical or impossible to buffer the entire "
"message ahead of time:"
msgstr "某些场景下，提前将整个消息缓冲起来并不现实或不可行："

#. type: list
#: 113
msgid ""
"* Streaming multimedia to an endpoint.\n"
"* Sending a message that does not fit in memory at once.\n"
"* Providing incremental results as they become available."
msgstr ""
"* 将流式多媒体数据发送到终端。\n"
"* 发送无法一次性装入内存的消息。\n"
"* 在结果可用时逐步提供。"

#. type: paragraph
#: 117
msgid ""
"For these cases, the partial data oriented interface may be used. This "
"example reads and echoes a complete message using this interface:"
msgstr ""
"在这些情况下，可以使用面向部分数据的接口。以下示例使用该接口读取并回显完整消"
"息："
