名前

Mojo::Server - HTTP/WebSocketサーバーの基底クラス

使い方

use Mojo::Base 'Mojo::Server';

sub run {
  my $self = shift;

  # トランザクションを取得
  my $tx = $self->build_tx;

  # リクエストイベントの放出
  $self->emit(request => $tx);
}

説明

Mojo::Serverは、 Mojo::Server::CGI, Mojo::Server::Daemon, Mojo::Server::Hypnotoad, Mojo::Server::Morbo, Mojo::Server::Prefork Mojo::Server::PSGIなどの、 抽象HTTP/WebSocketサーバーとサーバーインターフェースのための基底クラスです。

イベント

request

$server->on(request => sub {
  my ($server, $tx) = @_;
  ...
});

リクエストが準備され、処理される必要があるときに放出されます。

$server->unsubscribe('request');
$server->on(request => sub {
  my ($server, $tx) = @_;
  $tx->res->code(200);
  $tx->res->headers->content_type('text/plain');
  $tx->res->body('Hello World!');
  $tx->resume;
});

属性

Mojo::Serverは次の属性を実装しています。

app

my $app = $server->app;
$server = $server->app(MojoSubclass->new);

このサーバーが扱うアプリケーション。 デフォルトはMojo::HelloWorldオブジェクト。

reverse_proxy

my $bool = $server->reverse_proxy;
$server  = $server->reverse_proxy($bool);

このサーバーが、リバースプロキシの後ろで実行されるかどうか。 デフォルトは、MOJO_REVERSE_PROXYの値。

メソッド

Mojo::Server Mojo::EventEmitterからすべてのメソッドを継承しており、 次の新しいメソッドを実装しています。

build_app

my $app = $server->build_app('MyApp');
my $app = $server->build_app('MyApp', log => Mojo::Log->new);
my $app = $server->build_app('MyApp', {log => Mojo::Log->new});

クラスからアプリケーションを構築し、"app"に代入します。

build_tx

my $tx = $server->build_tx;

アプリケーションにトランザクションを構築させます。

daemonize

$server->daemonize;

サーバープロセスをデーモン化します。

load_app

my $app = $server->load_app('/home/sri/myapp.pl');

スクリプトからアプリケーションをロードします。

say Mojo::Server->new->load_app('./myapp.pl')->home;

new

my $server = Mojo::Server->new;
my $server = Mojo::Server->new(reverse_proxy => 1);
my $server = Mojo::Server->new({reverse_proxy => 1});

新しいMojo::Serverオブジェクトを構築し、デフォルトのリクエストの処理で requestイベントを購読します。

run

$server->run;

サーバーを開始します。

setuidgid

$server = $server->setuidgid;

プロセスのためにusergroupを設定。

参考

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

(Mojolicious 8.12を反映。2019年5月27日)