2009-07-22 4 views
6

я начал сервер Compojure (Jetty) с:Как мне сделать Compojure слушать одного IP

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

но NetStat все еще показывает, что он прослушивает 0.0.0.0:8080, то есть все IP-адреса.

Каков правильный параметр для перехода на run-сервер, чтобы заставить его прослушивать один IP-адрес?

ответ

7

Думаю, вам придется заплатить 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 [email protected]: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 [email protected]:12345 
+3

Это теперь свернутый в compojure, так что он просто работает - яй открытым исходным кодом! – l0st3d

 Смежные вопросы

  • Нет связанных вопросов^_^