运行 通过 IDE 菜单的 salix webApp
Running a salix webApp through an IDE menu
我有一些代码可以创建一个 salix 网络应用程序,并通过使用 util::Webserver 从 IDE 弹出菜单中 运行s 它。为了允许多次使用该命令,我尝试先关闭该地址的任何现有网络服务器,但它似乎不起作用。不管怎样,它总是出现非法参数错误,指出“关闭”不可能。
void run_game(Tree t, loc s){
t = annotate(t);
PSGAME g = ps_implode(t);
Checker c = check_game(g);
Engine engine = compile(c);
loc host = |http://localhost:9050/|;
try { util::Webserver::shutdown(host);} catch: ;
util::Webserver::serve(host, load_app(engine)().callback, asDaemon = true);
println("Serving content at <host>");
}
我预计会发生的情况是,此函数第一次 运行、shutdown
抛出一个错误,该错误因不存在网络服务器而被抑制,然后 serve
启动网络服务器。如果用户再次尝试 运行 函数,则 shutdown
成功 运行s,清除地址绑定并且 serve
成功绑定到地址。
第二次实际发生的情况是,shutdown
仍然出错,错误消失,然后 serve
抱怨地址已被使用。
我正在寻找任何允许我在同一地址通过 IDE 的弹出菜单(之前注册的)启动 salix 应用程序的解决方案。
PS_contributions =
{
PS_style,
popup(
menu(
"PuzzleScript",
[
action("Run Game", run_game)
]
)
)
};
registerContributions(PS_NAME, PS_contributions);
对;我们 运行 遇到了类似的问题,并决定对 运行 网络应用程序进行特殊处理。所以我们添加了这个:
data Menu = interaction(str label, Content ((&T <: Tree) tree, loc selection) server)
Content
来自 Content
模块,它基本上包装了任何 Response(Request)
servlet。
因此,您可以将您的 salix webApp 包装在 Content
和 return 中,给定当前选择和当前树。
IDE 将负责启动和关闭服务器。每次创建具有相同标签的交互时或在给定 HTTP 端口上静默 30 分钟后,它都会执行此操作。
我有一些代码可以创建一个 salix 网络应用程序,并通过使用 util::Webserver 从 IDE 弹出菜单中 运行s 它。为了允许多次使用该命令,我尝试先关闭该地址的任何现有网络服务器,但它似乎不起作用。不管怎样,它总是出现非法参数错误,指出“关闭”不可能。
void run_game(Tree t, loc s){
t = annotate(t);
PSGAME g = ps_implode(t);
Checker c = check_game(g);
Engine engine = compile(c);
loc host = |http://localhost:9050/|;
try { util::Webserver::shutdown(host);} catch: ;
util::Webserver::serve(host, load_app(engine)().callback, asDaemon = true);
println("Serving content at <host>");
}
我预计会发生的情况是,此函数第一次 运行、shutdown
抛出一个错误,该错误因不存在网络服务器而被抑制,然后 serve
启动网络服务器。如果用户再次尝试 运行 函数,则 shutdown
成功 运行s,清除地址绑定并且 serve
成功绑定到地址。
第二次实际发生的情况是,shutdown
仍然出错,错误消失,然后 serve
抱怨地址已被使用。
我正在寻找任何允许我在同一地址通过 IDE 的弹出菜单(之前注册的)启动 salix 应用程序的解决方案。
PS_contributions =
{
PS_style,
popup(
menu(
"PuzzleScript",
[
action("Run Game", run_game)
]
)
)
};
registerContributions(PS_NAME, PS_contributions);
对;我们 运行 遇到了类似的问题,并决定对 运行 网络应用程序进行特殊处理。所以我们添加了这个:
data Menu = interaction(str label, Content ((&T <: Tree) tree, loc selection) server)
Content
来自 Content
模块,它基本上包装了任何 Response(Request)
servlet。
因此,您可以将您的 salix webApp 包装在 Content
和 return 中,给定当前选择和当前树。
IDE 将负责启动和关闭服务器。每次创建具有相同标签的交互时或在给定 HTTP 端口上静默 30 分钟后,它都会执行此操作。