Mojo::IOLoop::Server - ノンブロッキングなTPCとUNIドメインソケットサーバー
使い方
use Mojo::IOLoop::Server; # リッスンソケットを生成 my $server = Mojo::IOLoop::Server->new; $server->on(accept => sub { my ($server, $handle) = @_; ... }); $server->listen(port => 3000); # コネクションの受け入れの開始と終了 $server->start; $server->stop; # 必要であればリアクターを開始 $server->reactor->start unless $server->reactor->is_running;
説明
Mojo::IOLoop::ServerはMojo::IOLoopのためにTCPコネクションを受け入れます。 このモジュールは実験的なもので、警告なしに変更される可能性があることに注意してください。
イベント
Mojo::IOLoop::ServerはMojo::EventEmitterのすべてのイベントを継承しており、 次の新しいイベントを発行することができます。
accept
$server->on(accept => sub { my ($server, $handle) = @_; });
それぞれの受け入れた接続のために安全に発行されます。
属性
Mojo::IOLoop::Serverは次の属性を実装しています。
reactor
my $reactor = $server->reactor; $server = $server->reactor(Mojo::Reactor::Poll->new);
低レベルのイベントウォッチャー。 デフォルトはグローバルなMojo::IOLoopシングルトンのreactor
属性の値です。
メソッド
Mojo::IOLoop::ServerはMojo::EventEmitterからすべてのメソッドを継承し、 次の新しいメソッドを実装しています。
generate_port
my $port = $server->generate_port;
フリーのTCPポートを検索します。 主に試験のためのユーティリティ機能として利用されます。
handle
my $handle = $server->handle;
サーバーのためのハンドルを取得します。通常は、IO::Socket::IPオブジェクトです。
listen
my $id = $loop->listen(port => 3000);
新しいリッスン(listen)ソケットを生成します。 TLSのサポートはIO::Socket::SSL (2.009+) に依存していることに注意してください。
下記のオプションが現在利用できます。
address
-
address => '127.0.0.1'
リッスンするローカルアドレス。デフォルトはすべてをリッスンします。 デフォルトは、
0.0.0.0
。 backlog
-
backlog => 128
最大のバックログサイズ。デフォルトは
SOMAXCONN
。 - fd
-
fd => 3
すでに準備されたリッスンソケットのファイルディスクリプタ
- path
-
path => '/tmp/myapp.sock'
リッスンしているUNIXドメインソケットのパス
port
-
port => 80
リッスンするポート。
- reuse
-
reuse => 1
SO_REUSEPORT
ソケットオプションで、複数サーバーが同じポートを利用することを許可する。 - single_accept
-
single_accept => 1
一度にひとつの接続だけ受けれる
tls
-
tls => 1
TLSを有効にします。
tls_ca
-
tls_ca => '/etc/tls/ca.crt'
TLS認証局ファイルへのパス。
tls_cert
-
tls_cert => '/etc/tls/server.crt'
TLS証明書ファイルのパス。デフォルトは組み込みのテスト証明書です。
- tls_ciphers
-
tls_ciphers => 'AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH'
チッパー仕様文字列。
tls_key
-
tls_key => '/etc/tls/server.key'
TLSキーファイルへのパス。デフォルトは組み込みのテストキーです。
- tls_protocols
-
tls_protocols => ['foo', 'bar']
ネゴシエーションへのALPNプロコトル
tls_verify
-
tls_verify => 0x00
TLSバリフィケーションモード。デフォルトは
0x03
. - tls_version
-
tls_version => 'TLSv1_2'
TLSプロコトルバージョン。
port
my $port = $server->port;
このサーバーがリッスンしているポートを取得する。
start
$server->start;
接続の受け入れを開始します。
stop
$server->stop;
接続の受け入れを停止します。
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolciious 8.12を反映。2019年5月22日更新)