自定义浏览器不会呈现自定义 Web 服务器提供的服务

Custom browser won't render what's served by custom web server

我已经将 Tatu 网络服务器修改为 运行 在一个随机端口上,并且 return 这个值来自它的 startServer 进程。然后我启动一个指向 "http://localhost:$port" 的自定义浏览器 (deskmlviewer),如下所示:

set port [tatu::startServer "" "" $tatu::options]

set deskmlRunner {
    set viewer [file join $::starkit::topdir .. .. gui bin deskmlviewer.exe]
    #puts "$viewer http://localhost:$port"
    exec $viewer "http://localhost:$port"
}

after 1 $deskmlRunner
vwait forever

虽然这只是启动浏览器而不呈现内容。然而,这是我的 运行 之一的注释掉 puts 行输出的内容:

C:/opt/dev/dexygen/github/repos/deskml/deskml-win/srv/tatuDeskml.vfs/../../gui/bin/deskmlviewer.exe http://localhost:56077

然后我可以从控制台 运行 并且浏览器显示服务器呈现的内容;我也同样可以在 Chrome 中使用 http://localhost:56077 和 运行,它会呈现预期的内容。 https://i.imgur.com/hvuky2r.png

我尝试将 ms 参数增加到 after,包括一直增加到像 5000 这样荒谬的东西,但这没有效果。我还尝试用 curly 大括号围绕 $viewer 的 url 参数的全部或部分,以防斜线被转换为倾斜,但这也没有效果。

我做错了什么?我还能尝试什么?您甚至可以通过在 https://github.com/dexygen/deskml 克隆 git 存储库并导航到 deskml-w​​in 和 运行ning ./tclkitsh ./srv/tatuDeskml.vfs/main.tcl 来自己尝试;上面的代码位于 ./deskml-win/srv/lib/app/deskml-runner.tcl

答案需要在 exec 命令的末尾放置一个 &

exec $viewer "http://localhost:$port" & 

否则它是同步和阻塞的。功劳不属于我,而是属于 usenet

上的以下 user/response

https://groups.google.com/d/msg/comp.lang.tcl/YOK8a2i0bk8/Qw-12Pn8AgAJ