$kernel->yield('keepalive', $io_wheel->ID, $kernel);
####
keepalive => sub {
my ( $io_wheel_id, $kernel, $heap ) = @_[ ARG0, KERNEL ];
return unless exists $heap->{clients}{$io_wheel_id};
$heap->{clients}{$io_wheel_id}->put("keepalive");
$kernel->delay( 'keepalive' => 10, $io_wheel_id );
},
####
sub delete_client {
my ($kernel, $heap, $io_wheel_id) = @_;
delete $heap->{clients}{$io_wheel_id};
$kernel->delay(keepalive => undef);
}
####
on_connect_error => sub {
# Handle client error, including disconnect.
my $wheel_id = $_[ARG3];
delete_client(@_[KERNEL, HEAP], $wheel_id);
},