Skip to content

Commit

Permalink
Some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
knobo committed Jul 14, 2018
1 parent b662713 commit 4d88c1a
Show file tree
Hide file tree
Showing 10 changed files with 1,347 additions and 42 deletions.
12 changes: 6 additions & 6 deletions live-reload-middleware.lisp
Expand Up @@ -7,13 +7,13 @@
(in-package :lack.middleware.live.reload)

(defparameter *lack-middleware-live-reload*
(lambda (app) ;; &key port ...
(lambda (app &key port address)
;; TODO: use port and address
(live-reload-ws:ensure-running)
(lambda (env)
(live-reload-ws:ensure-running)
(destructuring-bind (&whole w code headers result) (funcall app env)
(declare (ignore code headers))
(typecase result
(pathname (live-reload:add result (getf env :path-info))
w)
(t w)))))
(typecase result
(pathname (live-reload:add result (getf env :path-info))))
w)))
"Middleware for live-reload")
71 changes: 41 additions & 30 deletions live-reload-ws.lisp
Expand Up @@ -5,11 +5,15 @@
(:export
#:start-live-reload
#:stop-live-reload
#:ensure-running))
#:ensure-running
#:*live-reload*
#:start-live-reload-ws))

(in-package #:live-reload-ws)

(defvar *live-reload-server* nil)
(defvar *live-reload-port* 35729)
(defvar *live-reload-address* "0.0.0.0")

(defparameter *live-reload-web* (make-instance 'ningle:<app>))

Expand All @@ -20,36 +24,38 @@

(defparameter *live-reload-hello-string* "{\"command\":\"hello\",\"protocols\":[\"http://livereload.com/protocols/official-7\",\"http://livereload.com/protocols/2.x-origin-version-negotiation\",\"http://livereload.com/protocols/2.x-remote-control\"],\"serverName\":\"LiveReload 2\"}")

(setf (ningle:route *live-reload-web* "/livereload")
(lambda (params)
(declare (ignore params))
(let ((env (lack.request:request-env *request*)))
(defun start-live-reload-ws (env)
(if (wsd:websocket-p env)
(let ((ws (wsd:make-server env)))

(if (wsd:websocket-p env)
(let ((ws (wsd:make-server env)))
(wsd:on :open ws
(lambda ()
(setf (gethash ws live-reload:*live-reload-clients*) t)))
(wsd:on :open ws
(lambda ()
(setf (gethash ws live-reload:*live-reload-clients*) t)))

(wsd:on :close ws
(lambda (&rest args)
(declare (ignore args))
(remhash ws live-reload:*live-reload-clients*)))
(wsd:on :close ws
(lambda (&rest args)
(declare (ignore args))
(remhash ws live-reload:*live-reload-clients*)))

(wsd:on :message ws
(lambda (message)
;;(log:info "Message" message)
))
(wsd:on :message ws
(lambda (message)
;;(log:info "Message" message)
))

(wsd:once :message ws
(lambda (message)
"Maybe move this to connect.."
(declare (ignore message))
(wsd:send ws *live-reload-hello-string*)))
(wsd:once :message ws
(lambda (message)
"Maybe move this to connect.."
(declare (ignore message))
(wsd:send ws *live-reload-hello-string*)))

(wsd:start-connection ws))
(progn (error "not websocket"))))))
(wsd:start-connection ws))
(progn (error "not websocket"))))

(setf (ningle:route *live-reload-web* "/livereload")
(lambda (params)
(declare (ignore params))
(let ((env (lack.request:request-env *request*)))
(start-live-reload-ws env))))

(setf (ningle:route *live-reload-web* "/livereload.js")
(lambda (params)
Expand All @@ -59,18 +65,23 @@
(setf (ningle:route *live-reload-web* "/")
(lambda (params)
(declare (ignore params))
"nothing"))
nil))

(defun ensure-running ()
(defun ensure-running (&key
(port *live-reload-port*)
(address *live-reload-address*))
(unless *live-reload-server*
(log:info "Starting live-reload server")
(start-live-reload)))

(defun start-live-reload ()
(defun start-live-reload (&key
(port *live-reload-port*)
(address *live-reload-address*))
(setf *live-reload-server*
(clack:clackup *live-reload*
:address "0.0.0.0"
:address address
:server :hunchentoot
:port 35729
:port port
:worker-num 2
:debug t))
(live-reload:run-thread))
Expand Down
3 changes: 2 additions & 1 deletion live-reload.asd
Expand Up @@ -11,7 +11,8 @@
"inotify"
"websocket-driver"
"clack"
"ningle")
"ningle"
"log4cl")
:components ((:file "package")
(:file "live-reload")
(:file "live-reload-ws")
Expand Down
1 change: 0 additions & 1 deletion live-reload.lisp
Expand Up @@ -4,7 +4,6 @@

(defvar *file-adder-mailbox* (make-mailbox :name "Add files"))
(defvar *files* (make-hash-table :test 'equal))

(defvar *live-reload-clients* (make-hash-table :test 'eql))

(defun stop ()
Expand Down

0 comments on commit 4d88c1a

Please sign in to comment.