diff --git a/other/project.clj b/other/project.clj index 7942853..fb2c0ba 100644 --- a/other/project.clj +++ b/other/project.clj @@ -1,11 +1,13 @@ (defproject websockify "1.0.0-SNAPSHOT" - :description "Websockify" + :description "Clojure implementation of Websockify" + :url "https://github.com/kanaka/websockify" :dependencies [[org.clojure/clojure "1.2.1"] + [org.clojure/tools.cli "0.2.1"] [ring/ring-jetty-adapter "1.0.0-beta2"] [org.eclipse.jetty/jetty-websocket "7.5.4.v20111024"] [org.eclipse.jetty/jetty-server "7.5.4.v20111024"] [org.eclipse.jetty/jetty-servlet "7.5.4.v20111024"] - [org.jboss.netty/netty "3.2.5.Final"] - ] -; :dev-dependencies [[swank-clojure "1.3.0-SNAPSHOT"]] + [org.jboss.netty/netty "3.2.5.Final"]] + ;:dev-dependencies [[swank-clojure "1.3.0-SNAPSHOT"]] + :main websockify ) diff --git a/other/websockify.clj b/other/websockify.clj index dcf8fd1..ad1cc33 100644 --- a/other/websockify.clj +++ b/other/websockify.clj @@ -1,5 +1,7 @@ (ns websockify - (:use ring.adapter.jetty) + ;(:use ring.adapter.jetty) + (:require [clojure.tools.cli :as cli] + [clojure.string :as string]) (:import @@ -20,8 +22,8 @@ [org.eclipse.jetty.servlet ServletContextHandler ServletHolder DefaultServlet] [org.eclipse.jetty.websocket - WebSocket WebSocketClientFactory WebSocketClient - WebSocketServlet])) + WebSocket WebSocket$OnTextMessage + WebSocketClientFactory WebSocketClient WebSocketServlet])) ;; TCP / NIO @@ -69,7 +71,7 @@ ;; http://wiki.eclipse.org/Jetty/Feature/WebSockets (defn make-websocket-servlet [open close message] - (proxy [org.eclipse.jetty.websocket.WebSocketServlet] [] + (proxy [WebSocketServlet] [] (doGet [request response] ;;(println "doGet" request) (.. (proxy-super getServletContext) @@ -77,7 +79,7 @@ (forward request response))) (doWebSocketConnect [request response] (println "doWebSocketConnect") - (reify org.eclipse.jetty.websocket.WebSocket$OnTextMessage + (reify WebSocket$OnTextMessage (onOpen [this connection] (open this connection)) (onClose [this code message] (close this code message)) (onMessage [this data] (message this data)))))) @@ -208,3 +210,24 @@ (reset! targets {}) nil))) +(defn -main [& args] + (let [[options args banner] + (cli/cli + args + ["-v" "--[no-]verbose" "Verbose output"] + ["--web" "Run webserver with root at given location"] + ["-h" "--help" "Show help" :default false :flag true] + )] + (when (or (:help options) + (not= 2 (count args))) + (println banner) + (System/exit 0)) + (println options) + (println args) + (let [target (second args) + [target-host target-port] (string/split target #":")] + (start-websockify :listen-port (Integer/parseInt (first args)) + :target-host target-host + :target-port (Integer/parseInt target-port) + :web (:web options)))) + nil) \ No newline at end of file