secureServer 静态方法

Future<SecureSocket> secureServer(
  1. Socket socket,
  2. SecurityContext? context, {
  3. List<int>? bufferedData,
  4. bool requestClientCertificate = false,
  5. bool requireClientCertificate = false,
  6. List<String>? supportedProtocols,
})

在现有的服务器连接上启动 TLS。

接收一个已连接的 socket 并开始服务器端 TLS 握手,以使通信安全。当返回的 future 完成,SecureSocket 已完成 TLS 握手。使用此函数要求连接的另一端将启动 TLS 握手。

如果 socket 已经有订阅,则此订阅将不再接收和事件。在大多数情况下,在开始 TLS 握手之前调用 StreamSubscription.pause 是正确的事情。

如果已经从 socket 读取了一些 TLS 握手的请求数据,则可以将这些数据传递到 bufferedData 参数中。这些数据将在处理 socket 上的其他任何数据之前进行处理。

有关参数的更多信息,请参阅 SecureServerSocket.bind

实现

static Future<SecureSocket> secureServer(
    Socket socket, SecurityContext? context,
    {List<int>? bufferedData,
    bool requestClientCertificate = false,
    bool requireClientCertificate = false,
    List<String>? supportedProtocols}) {
  return socket._detachRaw().then<RawSecureSocket>((detachedRaw) {
    return RawSecureSocket.secureServer(detachedRaw[0] as RawSocket, context,
        subscription: detachedRaw[1] as StreamSubscription<RawSocketEvent>?,
        bufferedData: bufferedData,
        requestClientCertificate: requestClientCertificate,
        requireClientCertificate: requireClientCertificate,
        supportedProtocols: supportedProtocols);
  }).then<SecureSocket>((raw) => new SecureSocket._(raw));
}