Свойство connectionFactory
Устанавливает функцию, используемую для создания соединений с сокетами.
Запрашиваемый URL (например, через getUrl) и конфигурация прокси (f.proxyHost и f.proxyPort) передаются в качестве аргументов. f.proxyHost и f.proxyPort будут null если соединение не устанавливается через прокси.
Поскольку соединения могут быть повторно использованы на основе хоста и порта, важно, чтобы функция не игнорировала f.proxyHost и f.proxyPort, если они не null. Если прокси не имеют значения для возвращаемого Socket, вы можете установить findProxy для использования прямого соединения.
Например:
import "dart:io";
void main() async {
HttpClient client = HttpClient()
..connectionFactory = (Uri uri, String? proxyHost, int? proxyPort) {
assert(proxyHost == null);
assert(proxyPort == null);
var address = InternetAddress("/var/run/docker.sock",
type: InternetAddressType.unix);
return Socket.startConnect(address, 0);
}
..findProxy = (Uri uri) => 'DIRECT';
final request = await client.getUrl(Uri.parse("http://ignored/v1.41/info"));
final response = await request.close();
print(response.statusCode);
await response.drain();
client.close();
} Реализация
void set connectionFactory(
Future<ConnectionTask<Socket>> Function(
Uri url, String? proxyHost, int? proxyPort)?
f);
© 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/HttpClient/connectionFactory.html