Метод connect
- dynamic host,
- int port,
- {SecurityContext? context,
-
bool onBadCertificate(
- X509Certificate certificate
- void keyLog(
- String line
-
List<
String>? supportedProtocols, - Duration? timeout}
Создает новый защищенный клиентский сокет и подключает его к указанному host на порту port.
Возвращаемое значение Future завершит работу с SecureSocket, который подключен и готов к подписке.
Сертификат, предоставленный сервером, проверяется с использованием доверенных сертификатов, заданных в объекте SecurityContext. По умолчанию объект SecurityContext содержит встроенный набор доверенных корневых сертификатов для известных сертификационных центров.
onBadCertificate — это необязательный обработчик для недоверенных сертификатов. Обработчик получает X509Certificate и может проверить его и решить (или позволить пользователю решить), принять ли подключение. Обработчик должен вернуть true, чтобы продолжить SecureSocket подключение.
keyLog — это необязательный обратный вызов, который будет вызван при обмене новых TLS-ключей с сервером. keyLog получит одну строку текста в формате NSS Key Log Format для каждого вызова. Запись этих строк в файл позволит инструментам (например, Wireshark) расшифровать содержимое, отправленное через этот сокет. Это предназначено для отладки защищенных сокетов на уровне сети и не должно использоваться в рабочем коде. Например:
final log = File('keylog.txt');
final socket = await SecureSocket.connect('www.example.com', 443,
keyLog: (line) => log.writeAsStringSync(line, mode: FileMode.append)); supportedProtocols — это необязательный список протоколов (в порядке убывания приоритета), которые следует использовать во время переговоров по протоколу ALPN с сервером. Примерами значений являются "http/1.1" или "h2". Выбранный протокол можно получить через SecureSocket.selectedProtocol.
Аргумент timeout используется для задания максимального допустимого времени ожидания установления подключения. Если timeout превышает системный порог ожидания, таймаут может наступить раньше, чем указано в timeout. При таймауте выбрасывается SocketException, и все текущие попытки подключения к host отменяются.
Реализация
static Future<SecureSocket> connect(host, int port,
{SecurityContext? context,
bool onBadCertificate(X509Certificate certificate)?,
void keyLog(String line)?,
List<String>? supportedProtocols,
Duration? timeout}) {
return RawSecureSocket.connect(host, port,
context: context,
onBadCertificate: onBadCertificate,
keyLog: keyLog,
supportedProtocols: supportedProtocols,
timeout: timeout)
.then((rawSocket) => new SecureSocket._(rawSocket));
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-io/SecureSocket/connect.html