Provided by: libmojolicious-perl_4.63+dfsg-1_all bug

NAME

       Mojo::Server::Daemon - Non-blocking I/O HTTP and WebSocket server

SYNOPSIS

         use Mojo::Server::Daemon;

         my $daemon = Mojo::Server::Daemon->new(listen => ['http://*:8080']);
         $daemon->unsubscribe('request');
         $daemon->on(request => sub {
           my ($daemon, $tx) = @_;

           # Request
           my $method = $tx->req->method;
           my $path   = $tx->req->url->path;

           # Response
           $tx->res->code(200);
           $tx->res->headers->content_type('text/plain');
           $tx->res->body("$method request for $path!");

           # Resume transaction
           $tx->resume;
         });
         $daemon->run;

DESCRIPTION

       Mojo::Server::Daemon is a full featured, highly portable non-blocking I/O HTTP and
       WebSocket server, with IPv6, TLS, Comet (long polling), keep-alive, connection pooling,
       timeout, cookie, multipart and multiple event loop support.

       For better scalability (epoll, kqueue) and to provide IPv6 as well as TLS support, the
       optional modules EV (4.0+), IO::Socket::IP (0.16+) and IO::Socket::SSL (1.75+) will be
       used automatically by Mojo::IOLoop if they are installed. Individual features can also be
       disabled with the MOJO_NO_IPV6 and MOJO_NO_TLS environment variables.

       See Mojolicious::Guides::Cookbook for more.

EVENTS

       Mojo::Server::Daemon inherits all events from Mojo::Server.

ATTRIBUTES

       Mojo::Server::Daemon inherits all attributes from Mojo::Server and implements the
       following new ones.

   acceptors
         my $acceptors = $daemon->acceptors;
         $daemon       = $daemon->acceptors([]);

       Active acceptors.

   backlog
         my $backlog = $daemon->backlog;
         $daemon     = $daemon->backlog(128);

       Listen backlog size, defaults to "SOMAXCONN".

   group
         my $group = $daemon->group;
         $daemon   = $daemon->group('users');

       Group for server process.

   inactivity_timeout
         my $timeout = $daemon->inactivity_timeout;
         $daemon     = $daemon->inactivity_timeout(5);

       Maximum amount of time in seconds a connection can be inactive before getting closed,
       defaults to the value of the MOJO_INACTIVITY_TIMEOUT environment variable or 15. Setting
       the value to 0 will allow connections to be inactive indefinitely.

   ioloop
         my $loop = $daemon->ioloop;
         $daemon  = $daemon->ioloop(Mojo::IOLoop->new);

       Event loop object to use for I/O operations, defaults to the global Mojo::IOLoop
       singleton.

   listen
         my $listen = $daemon->listen;
         $daemon    = $daemon->listen(['https://localhost:3000']);

       List of one or more locations to listen on, defaults to the value of the MOJO_LISTEN
       environment variable or "http://*:3000".

         # Allow multiple servers to use the same port (SO_REUSEPORT)
         $daemon->listen(['http://*:8080?reuse=1']);

         # Listen on IPv6 interface
         $daemon->listen(['http://[::1]:4000']);

         # Listen on two ports with HTTP and HTTPS at the same time
         $daemon->listen([qw(http://*:3000 https://*:4000)]);

         # Use a custom certificate and key
         $daemon->listen(['https://*:3000?cert=/x/server.crt&key=/y/server.key']);

         # Or even a custom certificate authority
         $daemon->listen(
           ['https://*:3000?cert=/x/server.crt&key=/y/server.key&ca=/z/ca.crt']);

       These parameters are currently available:

       ca
           ca=/etc/tls/ca.crt

         Path to TLS certificate authority file.

       cert
           cert=/etc/tls/server.crt

         Path to the TLS cert file, defaults to a built-in test certificate.

       ciphers
           ciphers=AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH

         Cipher specification string.

       key
           key=/etc/tls/server.key

         Path to the TLS key file, defaults to a built-in test key.

       reuse
           reuse=1

         Allow multiple servers to use the same port with the "SO_REUSEPORT" socket option.

       verify
           verify=0x00

         TLS verification mode, defaults to 0x03.

   max_clients
         my $max = $daemon->max_clients;
         $daemon = $daemon->max_clients(1000);

       Maximum number of parallel client connections, defaults to 1000.

   max_requests
         my $max = $daemon->max_requests;
         $daemon = $daemon->max_requests(100);

       Maximum number of keep-alive requests per connection, defaults to 25.

   silent
         my $bool = $daemon->silent;
         $daemon  = $daemon->silent($bool);

       Disable console messages.

   user
         my $user = $daemon->user;
         $daemon  = $daemon->user('web');

       User for the server process.

METHODS

       Mojo::Server::Daemon inherits all methods from Mojo::Server and implements the following
       new ones.

   run
         $daemon->run;

       Run server.

   setuidgid
         $daemon = $daemon->setuidgid;

       Set user and group for process.

   start
         $daemon = $daemon->start;

       Start accepting connections.

   stop
         $daemon = $daemon->stop;

       Stop accepting connections.

DEBUGGING

       You can set the MOJO_DAEMON_DEBUG environment variable to get some advanced diagnostics
       information printed to "STDERR".

         MOJO_DAEMON_DEBUG=1

SEE ALSO

       Mojolicious, Mojolicious::Guides, <http://mojolicio.us>.