connectionFactory property
set
connectionFactory
(Future<ConnectionTask<Socket> > f(Uri url, String? proxyHost, int? proxyPort)?)
override
Sets the function used to create socket connections.
The URL requested (e.g. through getUrl) and proxy configuration
(f.proxyHost
and f.proxyPort
) are passed as arguments. f.proxyHost
and f.proxyPort
will be null
if the connection is not made through
a proxy.
Since connections may be reused based on host and port, it is important
that the function not ignore f.proxyHost
and f.proxyPort
if they are
not null
. If proxies are not meaningful for the returned Socket, you
can set findProxy to use a direct connection.
For example:
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();
}
Implementation
@override
set connectionFactory(
Future<ConnectionTask<Socket>> Function(
Uri url, String? proxyHost, int? proxyPort)?
f) {
client.connectionFactory = f;
}