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 是正确的做法。

如果 TLS 握手的一些数据已经从 socket 读取,这些数据可以通过 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));
}