secureServer 静态方法

Future<RawSecureSocket> secureServer(
  1. RawSocket socket,
  2. SecurityContext? context, {
  3. StreamSubscription<RawSocketEvent>? subscription,
  4. List<int>? bufferedData,
  5. bool requestClientCertificate = false,
  6. bool requireClientCertificate = false,
  7. List<String>? supportedProtocols,
})

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

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

如果 socket 已经有一个订阅,请将现有订阅传递到 subscription 参数中。secureServer 操作将通过用自己的安全处理替换处理程序来接管订阅。调用者不得再触摸此订阅。传递暂停的订阅是错误的。

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

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

实现

static Future<RawSecureSocket> secureServer(
    RawSocket socket, SecurityContext? context,
    {StreamSubscription<RawSocketEvent>? subscription,
    List<int>? bufferedData,
    bool requestClientCertificate = false,
    bool requireClientCertificate = false,
    List<String>? supportedProtocols}) {
  socket.readEventsEnabled = false;
  socket.writeEventsEnabled = false;
  return _RawSecureSocket.connect(
      socket.address, socket.remotePort, true, socket,
      context: context,
      subscription: subscription,
      bufferedData: bufferedData,
      requestClientCertificate: requestClientCertificate,
      requireClientCertificate: requireClientCertificate,
      supportedProtocols: supportedProtocols);
}