名前

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::ServerMojo::IOLoopのためにTCPコネクションを受け入れます。 このモジュールは実験的なもので、警告なしに変更される可能性があることに注意してください。

イベント

Mojo::IOLoop::ServerMojo::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::ServerMojo::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日更新)

関連情報