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;
プロセスのためにuser
とgroup
を設定。
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年5月27日)