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 握手以确保通信安全。当返回的未来完成时,RawSecureSocket 已完成 TLS 握手。使用此函数要求连接的另一端将启动 TLS 握手。

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

如果已经从套接字中读取了 TLS 握手的一些数据,则可以将这些数据传递给 bufferedData 参数。这些数据将在套接字上可用的大多数其他数据之前被处理。

有关参数的更多信息,请参阅 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);
}