clojure - 如何让 Compojure 收听单个 IP

标签 clojure compojure

我已经启动了一个 Compojure (Jetty) 服务器:

(defonce *server* (run-server {:host "localhost" :port 8080} "/*" (servlet routes)))

但是 netstat 仍然显示它正在监听 0.0.0.0:8080,即所有 IP。

传递给 run-server 以使其监听单个 IP 的正确参数是什么?

最佳答案

我认为您将不得不修补 Compojure。它对您的 :host 没有任何作用范围。将此更改更改为 server/jetty.clj似乎有效,但我还没有彻底测试过。

(defn- create-server
  "Construct a Jetty Server instance."
  [options servlets]
  (let [port     (options :port 80)
        host     (options :host "0.0.0.0")
        connector (doto (org.mortbay.jetty.bio.SocketConnector.)
                    (.setPort port)
                    (.setHost host))
        server   (doto (Server.)
                   (.addConnector connector))
        servlets (partition 2 servlets)]
    (when (or (options :ssl) (options :ssl-port))
      (add-ssl-connector! server options))
    (doseq [[url-or-path servlet] servlets]
      (add-servlet! server url-or-path servlet))
    server))
user> (run-server {:port 12346})
2009-07-22 13:48:53.999::INFO:  jetty-6.1.15
2009-07-22 13:48:54.002::INFO:  Started SocketConnector@0.0.0.0:12346
nil
user> (run-server {:host "127.0.0.1" :port 12345})
2009-07-22 13:48:08.061::INFO:  jetty-6.1.15
2009-07-22 13:48:08.129::INFO:  Started SocketConnector@127.0.0.1:12345

关于clojure - 如何让 Compojure 收听单个 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1166028/

相关文章:

java - 在 Clojure 中创建 flexmark 扩展

clojure - Compojure - 使用重定向时避免 "manual"URL 格式

Heroku 部署错误 w/Compojure : "Could not locate leiningen/core/classpath__init.class"

clojure - 如何将 korma 选择结果转换为 json 以提供休息服务(compojure)?

clojure - 如何在 Clojure 中访问表单的各个字段?

clojure - Compojure 路由参数为空

function - Clojure实践——使用复杂数据类型及其元素的函数?

clojure - Compojure:如何映射查询参数

java - Web 检索到 clojure 上的延迟字符串错误

eclipse - 逆时针在eclipse中不使用步进调试器?