gpt4 book ai didi

perl - 如何获取 Mojolicious::Lite 选择的端口?

转载 作者:行者123 更新时间:2023-12-04 10:19:07 24 4
gpt4 key购买 nike

Joel Berger posted this little program to start a web server to serve local files ,并且效果很好:

use Mojolicious::Lite;

@ARGV = qw(daemon);

use Cwd;
app->static->paths->[0] = getcwd;

any '/' => sub {
shift->render_static('index.html');
};

app->start;
我在 @ARGV 中预填充了命令行因为我忘了这样做。当它启动时,它会给出一条消息,告诉你它选择了哪个端口,如果可以的话,使用 3000:
$ perl ~/bin/mojo_cwd
[Fri Mar 29 19:14:09 2013] [info] Listening at "http://*:3000".
Server available at http://127.0.0.1:3000.
我想以编程方式获取该端口,以便测试套件知道在哪里寻找它,而且我不想通过报废输出来做到这一点。我对此的任何实验都没有用,我认为我总是走错方向。似乎它在启动之前不会选择端口,一旦我调用 start ,就这样结束了。
我也不想自己指定端口。
这不是一件紧急的事情。我目前有一个使用另一个简单的 HTTP 框架的解决方案,但如果可以的话,我一直在考虑用 Mojo 替换其中的大部分内容。由于旧的东西仍然有效,这真的只是一件好事,而不是我的方式。

最佳答案

你不能,但是 daemon命令仅绑定(bind)到端口 3000,除非您告诉它,否则不会尝试其他任何操作。如果您使用 Test::Mojo无论如何,您不需要提前知道端口,对于其他任何事情,您总是可以将您的应用程序包装在一个小 Mojo::Server::Daemon 中。脚本。

use Mojolicious::Lite;
use Mojo::IOLoop;
use Mojo::Server::Daemon;

get '/' => {text => 'Hello World!'};

my $port = Mojo::IOLoop->generate_port;
my $daemon = Mojo::Server::Daemon->new(
app => app,
listen => ["http://*:$port"]
);
$daemon->run;

关于perl - 如何获取 Mojolicious::Lite 选择的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15713422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com