【发布时间】:2013-03-20 18:07:40
【问题描述】:
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 替换其中的大部分内容。由于旧的东西仍然有效,这真的只是一件好事,而不是我的方式。
【问题讨论】:
-
如果您发布您试图从中获取端口号的代码将会很有帮助 - 这样我们就可以看到您期望 mojolicious 公开什么以及如何公开。
-
所有代码都在那里。我想运行该脚本并知道端口号。 sri 的回答是总是 3000 或者什么都没有。
-
这很容易测试:尝试并行启动 2 个应用程序实例会出现错误
Can't create listen socket: Address already in use at ...- 这表明默认端口是唯一尝试过的端口 -
事后看来很多事情都很容易。
标签: perl mojolicious