连接生命周期


🌐 Connection lifecycle

一个典型的客户会话会经过以下几个阶段:

🌐 A typical client session progresses through these stages:

  1. 使用服务器地址和选项调用 quic.connect()。这会返回一个 QuicSession。
  2. TLS 握手会自动运行。session.opened 在握手完成时解析,提供协商的 ALPN、加密套件和证书验证结果。
  3. 打开流、发送数据报,并交换数据。
  4. 调用 session.close() 以启动优雅关闭。允许现有流完成,然后会话被销毁。返回的 promise(也可作为 session.closed 使用)在拆除完成时解决。

在服务器端,使用回调调用 quic.listen()。每当 TLS 握手开始后,回调会在每个传入会话上触发。传入的流通过 session.onstream 回调到达,或者对于配置了 onheaders 回调的 HTTP/3 会话,直接通过该回调(参见 极简 HTTP/3 服务器 示例)。

🌐 On the server side, call quic.listen() with a callback. The callback fires for each incoming session after the TLS handshake begins. Incoming streams arrive via the session.onstream callback, or, for HTTP/3 sessions with an onheaders callback configured, directly through that callback (see the minimal HTTP/3 server example).

session.destroy() 可立即进行拆解——所有打开的流都会被销毁,且会话在不等待它们完成的情况下关闭。

QuicEndpoint 和 QuicSession 支持 Symbol.asyncDispose,因此它们可以与 await using 一起用于自动清理。