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日)
Mojoliciousドキュメント日本語訳