From 057fa058d89e033c73e15d90ff6400c5d477d224 Mon Sep 17 00:00:00 2001 From: gered Date: Mon, 29 Dec 2014 02:21:09 -0500 Subject: [PATCH] add extra server-side client connection management functions --- src/clj/clj_browserchannel_messaging/server.clj | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/clj/clj_browserchannel_messaging/server.clj b/src/clj/clj_browserchannel_messaging/server.clj index 0674186..2176f92 100644 --- a/src/clj/clj_browserchannel_messaging/server.clj +++ b/src/clj/clj_browserchannel_messaging/server.clj @@ -101,6 +101,19 @@ (fn [client-id request] (handle-session client-id request))))))) +(defn connected? + "Returns true if the specified client currently has an active + browserchannel session established." + [client-id] + (contains? @browserchannel/sessions client-id)) + +(defn disconnect! + "Forcibly disconnects a client's browserchannel session. If the specified + client is not valid / not connected, nothing happens and nil is returned." + [client-id & [reason]] + (if-let [session-agent (get @browserchannel/sessions client-id)] + (send-off session-agent browserchannel/close nil (or reason "Disconnected")))) + (defn init! "Sets up browserchannel for server-side use. This function should be called once during application startup.