Merge pull request #7 from gered/master

pass incoming browserchannel message request maps to listeners
This commit is contained in:
Dave Della Costa 2015-01-21 12:48:05 +09:00
commit 34a961658b
3 changed files with 12 additions and 12 deletions

View file

@ -1,10 +1,10 @@
(defproject net.thegeez/clj-browserchannel-jetty-adapter "0.0.5"
(defproject net.thegeez/clj-browserchannel-jetty-adapter "0.0.6"
:description "Jetty async adapter for BrowserChannel"
:url ""
:dependencies [[ring/ring-core "1.3.1"]
[ring/ring-servlet "1.3.1"]
[org.eclipse.jetty/jetty-server "8.1.16.v20140903"];; includes ssl
[net.thegeez/clj-browserchannel-server "0.0.9"]]
[net.thegeez/clj-browserchannel-server "0.1.0"]]
:profiles {:provided
{:dependencies
[[org.clojure/clojure "1.6.0"]]}})

View file

@ -1,4 +1,4 @@
(defproject net.thegeez/clj-browserchannel-server "0.0.9"
(defproject net.thegeez/clj-browserchannel-server "0.1.0"
:description "BrowserChannel server implementation in Clojure"
:dependencies [[ring/ring-core "1.3.1"]
[org.clojure/data.json "0.2.5"]]

View file

@ -151,11 +151,11 @@
(send-off listeners-agent
update-in [session-id event-key] #(conj (or % []) f)))
(defn notify-listeners [session-id event-key & data]
(defn notify-listeners [session-id request event-key & data]
(send-off listeners-agent
(fn [listeners]
(doseq [callback (get-in listeners [session-id event-key])]
(apply callback data))
(apply callback request data))
listeners)))
;; end of listeners
@ -316,7 +316,7 @@
;; after close this session cannot be reconnected to.
;; removes session for sessions
(close [this message]))
(close [this request message]))
(defrecord BackChannel [;; respond wraps the continuation, which is
;; the actual connection of the backward
@ -417,7 +417,7 @@
(assoc :session-timeout
(let [session-agent *agent*]
(schedule (fn []
(send-off session-agent close "Timed out"))
(send-off session-agent close nil "Timed out"))
(:session-timeout-interval details))))))
(queue-string [this string]
(update-in this [:array-buffer] queue string))
@ -464,7 +464,7 @@
this ;; do nothing if buffer is empty
)))
;; closes the session and removes it from sessions
(close [this message]
(close [this request message]
(-> this
clear-back-channel
@ -472,7 +472,7 @@
;; the heartbeat timeout is cancelled by clear-back-channel
)
(swap! sessions dissoc id)
(notify-listeners id :close message)
(notify-listeners id request :close message)
nil ;; the agent will no longer wrap a session
))
@ -489,7 +489,7 @@
(send-off old-session-agent #(-> (if old-array-id
(acknowledge-arrays % old-array-id)
%)
(close "Reconnected"))))
(close req "Reconnected"))))
(let [id (uuid)
details {:address (:remote-addr req)
:headers (:headers req)
@ -621,7 +621,7 @@
;; send as json for XHR and IE
(do
(doseq [map maps]
(notify-listeners (:id @session-agent) :map map))
(notify-listeners (:id @session-agent) req :map map))
(let [status (session-status @session-agent)]
{:status 200
:headers (:headers options)
@ -642,7 +642,7 @@
;; this is a request made in an img tag
(do ;;end session
(when session-agent
(send-off session-agent close "Disconnected"))
(send-off session-agent close req "Disconnected"))
{:status 200
:headers (:headers options)
:body ""}