Clojure websockify: -main and command line args.
Can now be launched like so: lein run websockify --web ../../noVNC/ 6080 localhost:5901
This commit is contained in:
parent
f2f838f7e2
commit
2c053f349c
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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)
|
Loading…
Reference in New Issue