pass incoming browserchannel message request maps to listeners

This commit is contained in:
Gered 2014-12-19 16:58:39 -05:00
parent ff20442d0f
commit ce554b8f63
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" :description "Jetty async adapter for BrowserChannel"
:url "" :url ""
:dependencies [[ring/ring-core "1.3.1"] :dependencies [[ring/ring-core "1.3.1"]
[ring/ring-servlet "1.3.1"] [ring/ring-servlet "1.3.1"]
[org.eclipse.jetty/jetty-server "8.1.16.v20140903"];; includes ssl [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 :profiles {:provided
{:dependencies {:dependencies
[[org.clojure/clojure "1.6.0"]]}}) [[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" :description "BrowserChannel server implementation in Clojure"
:dependencies [[ring/ring-core "1.3.1"] :dependencies [[ring/ring-core "1.3.1"]
[org.clojure/data.json "0.2.5"]] [org.clojure/data.json "0.2.5"]]

View file

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