名称

Mojo::Server::Daemon-无阻塞I/O HTTP和WebSocket服务器

简介

使用Mojo::Server::Daemon;my$daemon=Mojo::Server::daemon->new(listen=>['http://*:8080']);$daemon->unsubscribe('request')->on(request=>sub($daemon,$tx)){#请求我的$method=$tx->req->方法;我的$path=$tx->req->url->path;#响应$tx->res->code(200);$tx->res->headers->content_type('text/plain');$tx->res->body(“$path!的$method请求”);#恢复交易记录$tx->简历;});$daemon->运行;

说明

Mojo::服务器::守护程序是一个功能齐全、高度可移植的非阻塞I/O HTTP和WebSocket服务器,具有IPv6、TLS、SNI、Comet(长轮询)、keep-alive和多事件循环支持。

为了获得更好的可伸缩性(epoll、kqueue)并提供非阻塞名称解析、SOCKS5以及TLS支持,可选模块电动汽车(4.32+),网络::DNS::本机(0.15+),IO::插槽::插槽(0.64+)和IO::套接字::SSL如果可能,将自动使用(2.009+)。也可以使用禁用单个功能MOJO_NO_NNR公司,MOJO_NO袜子MOJO_NO_TLS公司环境变量。

请参见Mojolicious::Guides::Cookbook中的“部署”获取更多信息。

信号

这个Mojo::服务器::守护程序可以使用以下信号在运行时控制该过程。

国际贸易术语

立即关闭服务器。

活动

Mojo::服务器::守护程序从继承所有事件Mojo::服务器.

属性

Mojo::服务器::守护程序继承所有属性Mojo::服务器并实现了以下新功能。

受体

my$acceptors=$daemon->acceptors;$daemon=$daemon->acceptors(['6be0c140ef00a389c5d039536b56d139']);

活动受体ID。

#检查端口mu$port=$daemon->ioloop->receptor($daemon->acceptor->[0])->port;

积压工作

my$backlog=$daemon->backlog;$daemon=$daemon->backlog(128);

侦听待办事项列表大小,默认为SOMAXCONN公司.

不活动超时

my$timeout=$daemon->不活动超时;$daemon=$daemon->activity_timeout(5);

与活动请求的连接在关闭之前可以处于非活动状态的最长时间(秒),默认为MOJO_INACTIVITY超时环境变量或30。将值设置为0将允许连接无限期处于非活动状态。

奥洛普

my$loop=$daemon->ioloop;$daemon=$daemon->ioloop(Mojo::ioloop->new);

用于I/O操作的事件循环对象,默认为全局Mojo::IOLoop单身。

保持活动超时

我的$timeout=$daemon->keep_alive_timeout;$daemon=$daemon->keep_alive_timeout(10);

没有活动请求的连接在关闭之前可以处于非活动状态的最长时间(秒),默认为MOJO_保持激活_TIMEOUT环境变量或5。将值设置为0将允许连接无限期处于非活动状态。

my$listen=$daemon->listen;$daemon=$daemon->监听(['https://127.0.0.1:8080']);

具有一个或多个要侦听的位置的数组引用,默认为MOJO_LISTEN公司环境变量或http://*:3000(的快捷方式http://0.0.0.0:3000).

#侦听所有IPv4接口$daemon->listen(['http://*:3000']);#侦听所有IPv4和IPv6接口$daemon->listen(['http://[::]:3000']);#侦听IPv6接口$daemon->listen(['http://[::1]:4000']);#侦听IPv4和IPv6接口$daemon->监听(['http://127.0.0.1:3000','http://[::1]:3000']);#监听UNIX域套接字“/tmp/myapp.sock”(百分比编码斜杠)$daemon->listen(['http+unix://%2Ftmp%2Fmyapp.sock']);#文件描述符,由systemd使用$daemon->监听(['http://127.0.0.1?fd=3']);#允许多台服务器使用同一端口(SO_REUSEPORT)$daemon->listen(['http://*:8080?重用=1']);#同时使用HTTP和HTTPS侦听两个端口$daemon->listen(['http://*:3000','https://*:4000']);#使用自定义证书和密钥$daemon->listen(['https://*:3000?cert=/x/server.crt&key=/y/server.key']);#特定于域的证书和密钥(SNI)$daemon->监听([“https://*:3000?example.com_cert=/x/my.crt&example.com密钥=/y/my.key”]);#甚至是自定义证书颁发机构$daemon->监听(['https://*:3000?cert=/x/server.crt&key=/y/server.key&ca=/z/ca.crt');

这些参数当前可用:

加利福尼亚州
ca=/etc/tls/ca.crt

用于验证对等证书的TLS证书颁发机构文件的路径。

证书
cert=/etc/tls/server.crtmojolicious.org_cert=/etc/tls/mojo.crt

TLS证书文件的路径,默认为内置测试证书。

密码
密码=AES128-GCM-SHA256:RC4:高:!MD5:!空:!EDH公司

TLS密码规范字符串。有关格式的更多信息,请参阅https://www.openssl.org/docs/manmaster/man1/ciphers.html#CIPHER-字符串.

fd公司
fd=3

已准备好侦听套接字的文件描述符。

钥匙
key=/etc/tls/server.keymojolicious.org_key=/etc/tls/mojo.key

TLS密钥文件的路径,默认为内置测试密钥。

重复使用
重用=1

允许多台服务器使用同一端口SO_REUSEPORT公司插座选项。

单一验收
single_accept=1

一次只接受一个连接。

验证
验证=0x00

TLS验证模式。

版本
版本=TLSv1_2

TLS协议版本。

最大客户端数

my$max=$daemon->max_clients;$daemon=$daemon->max_clients(100);

在停止接受新的传入连接之前,允许此服务器并发处理的最大接受连接数传递给Mojo::IOLoop中的“max_connections”.

最大请求数(_R)

我的$max=$daemon->max_requests;$daemon=$daemon->max_requests(250);

每个连接的最大keep-alive请求数,默认为100.

沉默的

my$bool=$daemon->silent;$daemon=$daemon->silent($bool);

禁用控制台消息。

方法

Mojo::服务器::守护程序从继承所有方法Mojo::服务器并实现了以下新功能。

端口

my$ports=$daemon->ports;

获取此服务器当前正在侦听的所有端口。

#所有端口比如@{$daemon->ports};

运行

$daemon->运行;

运行服务器并等待“信号”.

开始

$daemon=$daemon->start;

通过启动或恢复接受连接“ioloop”.

#在随机端口上侦听my$port=$daemon->监听(['http://127.0.0.1'])->开始->端口->[0];#同时运行多个web服务器my$daemon1=Mojo::Server::Daemon->new(listen=>['http://*:3000'])->启动;my$daemon2=Mojo::Server::Daemon->new(listen=>['http://*:4000'])->启动;除非Mojo::IOLoop->is_running,否则Mojo::IOLoop->启动;

停止

$daemon=$daemon->stop;

停止通过接受连接“ioloop”.

调试

您可以设置MOJO_SERVER_DEBUG公司将一些高级诊断信息打印到的环境变量STDERR公司.

MOJO_SERVER_DEBUG=1

另请参阅

莫乔利奇,Mojolicious::指南,https://mojolicious.org.