加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 我如何获得Mojolicious :: Lite选择的端口?

发布时间:2020-12-15 22:03:27 所属栏目:大数据 来源:网络整理
导读: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; 我在@
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替换大部分的东西,如果可以的话.由于旧的东西仍然有效,这真的是一件好事,而不是我的方式.

解决方法

你不能,但守护进程命令只绑定到端口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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读