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) {
UnimplementedError("connectionFactory is not supported");
}