From ce554b8f6392a92b40a150ef7cf220e68f8f4e82 Mon Sep 17 00:00:00 2001 From: gered Date: Fri, 19 Dec 2014 16:58:39 -0500 Subject: [PATCH] pass incoming browserchannel message request maps to listeners --- clj-browserchannel-jetty-adapter/project.clj | 4 ++-- clj-browserchannel-server/project.clj | 2 +- .../src/net/thegeez/browserchannel.clj | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/clj-browserchannel-jetty-adapter/project.clj b/clj-browserchannel-jetty-adapter/project.clj index bd1425f..9180b4e 100644 --- a/clj-browserchannel-jetty-adapter/project.clj +++ b/clj-browserchannel-jetty-adapter/project.clj @@ -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"]]}}) diff --git a/clj-browserchannel-server/project.clj b/clj-browserchannel-server/project.clj index 63c5993..5748f2a 100644 --- a/clj-browserchannel-server/project.clj +++ b/clj-browserchannel-server/project.clj @@ -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"]] diff --git a/clj-browserchannel-server/src/net/thegeez/browserchannel.clj b/clj-browserchannel-server/src/net/thegeez/browserchannel.clj index c6dfe64..e97507a 100644 --- a/clj-browserchannel-server/src/net/thegeez/browserchannel.clj +++ b/clj-browserchannel-server/src/net/thegeez/browserchannel.clj @@ -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 ""}