我已经使用Clojure的Aleph库编写了一个相对简单的HTTP服务器。这并不是很复杂:
(ns cxpond.xmlrpc.core
(:gen-class)
(:require [aleph.http :as http]))
(defn handler [req]
{:status 200
:headers {"Content-Type" "text/plain"}
:body "HELLO, WORLD!"})
(defn -main [& args]
(http/start-server service/handler {:port 8005}))显然,它非常简单,并且非常紧跟Aleph的文档中给出的示例。它编译得很好,但是当我运行它(通过lein run)时,它没有just...does任何东西。程序会立即退出;很明显,它不会监听端口8005或类似的端口。这里我漏掉了什么?显然,要在Aleph中启动服务器,我还需要做一些其他的事情。
发布于 2016-09-15 02:04:24
你需要在'start- server‘返回的值上调用’alef.netty/wait-for-close‘来阻塞,直到服务器关闭。
发布于 2016-09-14 09:28:54
-main /start-server不阻塞,只是返回一个对象,因此在没有其他事情可做的情况下,http的执行结束,程序结束。
我不使用aleph,也看不到明显的join-like模式。看起来好像必须进行自己的生命周期管理,然后在从start-server返回的对象上调用.close来正常关闭。
https://stackoverflow.com/questions/39480741
复制相似问题