The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mojo::Server::TCP - Generic TCP server

VERSION

0.05

SYNOPSIS

  use Mojo::Server::TCP;
  my $echo = Mojo::Server::TCP->new(listen => ['tcp//*:9000']);

  $echo->on(read => sub {
    my($echo, $id, $bytes, $stream) = @_;
    $stream->write($bytes);
  });

  $echo->start;

DESCRIPTION

Mojo::Server::TCP is a generic TCP server based on the logic of the Mojo::Server::Daemon.

EVENTS

connect

  $self->on(connect => sub { my($self, $id) = @_ });

Emitted safely when a new client connects to the server. $id is a unique string used to identify the connection.

close

  $self->on(close => sub { my($self, $id) = @_ });

Emitted safely if the stream gets closed. $id is a unique string used to identify the connection.

error

  $self->on(error => sub { my($self, $id, $str) = @_ });

$id is a unique string used to identify the connection and $err holds the error message.

read

  $self->on(read => sub { my($self, $id, $bytes, $stream) = @_ });

Emitted safely if new data arrives on the stream. $id is a unique string used to identify the connection. $bytes holds the incoming data and $stream is a Mojo::IOLoop::Stream object you can use to respond back to the client.

The $stream object can also be retrived in your code using this code:

  $stream = $self->ioloop->stream($id);

It is much safer to avoid memory leaks to pass $id around instead of the $stream object.

timeout

  $self->on(timeout => sub { my($self, $id) = @_ });

Emitted safely if the stream has been inactive for too long and will get closed automatically. $id is a unique string used to identify the connection.

ATTRIBUTES

ioloop

  $ioloop = $self->ioloop;
  $self = $self->ioloop(Mojo::IOLoop->new);

Returns the Mojo::IOLoop object.

listen

  $array_ref = $self->listen;
  $self = $self->listen(['tcp://localhost:3000']);

List of one or more locations to listen on, defaults to "tcp://*:3000".

server_class

  $str = $daemon->server_class;
  $self = $self->server_class('Mojo::Server::Prefork');

Used to set a custom server class. The default is Mojo::Server::Daemon. Check out Mojo::Server::Prefork if you want a faster server.

METHODS

run

  $self = $self->run;

Start accepting connections and run the server.

start

  $self = $self->start;

Start listening for connections. See also "run".

stop

  $self = $self->stop;

Stop the server.

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org