<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">连接拆除</string>
    <string name="">WebSocket 协议规范（rfc6455 第 7.1.1 节）概述了一个称为“关闭 WebSocket 连接”的操作。该操作会清理接收端剩余字节，并同时关闭底层的 TCP/IP 连接。通常优先采用有序关闭方式；对于 TLS 或 SSL 流，则需要进行协议级的关闭。这给 [link beast.ref.boost__beast__websocket__stream stream] 的实现带来一个小问题：流的 NextLayer 模板类型仅要求满足 SyncStream 或 AsyncStream，但这些概念并不支持关闭连接的操作。</string>
    <string name="">为使实现能够执行关闭操作中的关闭步骤，该库公开了两个定制点，它们是与下一层类型关联的自由函数：</string>
    <string name="">* [link beast.ref.boost__beast__websocket__teardown `teardown`]: Overloads</string>
    <string name="">* [link beast.ref.boost__beast__websocket__async_teardown `async_teardown`]:</string>
    <string name="">当使用 Asio 类型 socket 或 ssl_stream 作为下一层来实例化 WebSocket 流时，实现会提供适当的拆除定制点重载，此时无需用户额外操作。但如果为自定义类型实例化 WebSocket 流，且未为该类型提供这些定制点，则会导致编译错误。另外，如果自定义类型封装了上述某个 Asio 对象，则可能需要调用被封装对象的拆除定制点。以下示例展示了如何完成这些操作。</string>
    <string name="">用户自定义拆除</string>
    <string name="">要为自定义类型提供拆除操作的重载，只需声明两个具有正确签名的自由函数，这些函数接受对自定义类型的引用作为流参数：</string>
    <string name="">当实现调用异步拆除函数时，总是传入一个可调用的完成处理器。定义 `async_teardown` 的自定义重载时，无需指定返回类型的定制。</string>
    <string name="">调用拆除操作</string>
    <string name="">要调用该定制点，首先通过 `using` 声明将默认实现引入作用域，然后不使用命名空间限定符直接调用该定制点，以便让参数依赖查找（ADL）生效：</string>
</resources>
