Mojo::I...:Client(3)
π NAME π
Mojo::IOLoop::Client β it's the non-blocking TCP/IP and UNIX domain socket client for Mojo, bestie. Yes, that whole Mojo::I...:Client(3) thing up in the corner? That's literally this page, just with the name doing a little shy truncation moment. The real full name is Mojo::IOLoop::Client, and it serves. π
β¨ SYNOPSIS β¨
okay so here's the whole vibe check in code form, no cap:
use Mojo::IOLoop::Client;
# Create socket connection
my $client = Mojo::IOLoop::Client->new;
$client->on(connect => sub ($client, $handle) {...});
$client->on(error => sub ($client, $err) {...});
$client->connect(address => 'example.com', port => 80);
# Start reactor if necessary
$client->reactor->start unless $client->reactor->is_running;
look at that. gorgeous. πΈ
π¦ DESCRIPTION π¦
Mojo::IOLoop::Client opens TCP/IP and UNIX domain socket connections for Mojo::IOLoop. that's it, that's the job, and it does it non-blockingly, which is lowkey the most iconic thing about it. π
π EVENTS π
Mojo::IOLoop::Client inherits all events from Mojo::EventEmitter (yes, all of them, it's giving nepo baby but in a good way π«Ά) and can emit the following new ones.
π connect
$client->on(connect => sub ($client, $handle) {...});
Emitted once the connection is established. literally the moment. the main character moment. when it fires, you and your $handle are officially connected π
π error
$client->on(error => sub ($client, $err) {...});
Emitted if an error occurs on the connection, and heads up β it's fatal if unhandled. like if you don't handle it, it will simply end you. π
π ATTRIBUTES π
Mojo::IOLoop::Client implements the following attributes.
π reactor
my $reactor = $client->reactor;
$client = $client->reactor(Mojo::Reactor::Poll->new);
This is the low-level event reactor. it defaults to the "reactor" attribute value of the global Mojo::IOLoop singleton β¨. and ngl there's a little caveat here: note that this attribute is weakened β not emotionally, technically. π
π₯ METHODS π₯
Mojo::IOLoop::Client inherits all methods from Mojo::EventEmitter and implements the following new ones.
β can_nnr
my $bool = Mojo::IOLoop::Client->can_nnr;
True if Net::DNS::Native 0.15+ is installed and non-blocking name resolution support enabled. that's the whole report bestie π
β can_socks
my $bool = Mojo::IOLoop::Client->can_socks;
True if IO::Socket::SOCKS 0.64+ is installed and SOCKS5 support enabled. cute and to the point π§
β connect
$client->connect(address => '127.0.0.1', port => 3000);
$client->connect({address => '127.0.0.1', port => 3000});
Open a socket connection to a remote host. now listen β there are some dependencies lurking: non-blocking name resolution depends on Net::DNS::Native (0.15+), SOCKS5 support on IO::Socket::Socks (0.64), and TLS support on IO::Socket::SSL (2.009+). like, the features are there, but only if you brought the right friends. π«Ά
These options are currently available:
address
address => 'mojolicious.org'
Address or host name of the peer to connect to, defaults to 127.0.0.1.
handle
handle => $handle
Use an already prepared IO::Socket::IP object. it's giving "I already did the work, don't make me do it again." β¨
path
path => '/tmp/myapp.sock'
Path of UNIX domain socket to connect to.
port
port => 80
Port to connect to, defaults to 80, or 443 when you've got the "tls" option on. π
socket_options
socket_options => {LocalAddr => '127.0.0.1'}
Additional options for IO::Socket::IP when opening new connections.
socks_address
socks_address => '127.0.0.1'
Address or host name of SOCKS5 proxy server to use for connection.
socks_pass
socks_pass => 'secr3t'
Password to use for SOCKS5 authentication. π iykyk.
socks_port
socks_port => 9050
Port of SOCKS5 proxy server to use for connection.
socks_user
socks_user => 'sri'
Username to use for SOCKS5 authentication.
timeout
timeout => 15
Maximum amount of time in seconds establishing connection may take before getting canceled β defaults to 10, even though the example above is 15, and yes, that's exactly what the page says, don't come for me π
tls
tls => 1
Enable TLS. π slay.
tls_ca
tls_ca => '/etc/tls/ca.crt'
Path to TLS certificate authority file.
tls_cert
tls_cert => '/etc/tls/client.crt'
Path to the TLS certificate file.
tls_key
tls_key => '/etc/tls/client.key'
Path to the TLS key file.
tls_options
tls_options => {SSL_alpn_protocols => ['foo', 'bar'], SSL_verify_mode => 0x00}
Additional options for IO::Socket::SSL.
π SEE ALSO π
MojoliciousMojolicious::Guides- <https://mojolicious.org>
go read them, they're right there, they're iconic, they ate π
π okay that's the whole page, bestie β brought to you by perl v5.42.0 and dated 2026-07-15, which is the footer doing its little sign-off, and honestly? periodt. now go open some sockets. π¦πβ¨
π¦ where this page comes from
- opensuse-leap 16.0: perl-Mojolicious 9.480.0-bp160.2.1 Β· Artistic-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms