2015-12-08 00:50:03 +00:00
|
|
|
(ns app.websockets
|
|
|
|
|
(:require [app.conf :refer [config]]
|
|
|
|
|
[app.audit-log :refer [audit log]])
|
2015-12-07 05:00:52 +00:00
|
|
|
(:require-macros [mount.core :refer [defstate]]))
|
|
|
|
|
|
2015-12-07 20:57:51 +00:00
|
|
|
(defn ws-status [ws]
|
|
|
|
|
{:url (.-url ws) :ready-state (.-readyState ws)})
|
|
|
|
|
|
2015-12-07 05:00:52 +00:00
|
|
|
(defn connect [uri]
|
|
|
|
|
(let [ws (js/WebSocket. uri)]
|
2015-12-07 20:57:51 +00:00
|
|
|
(audit log :system-a "connecting to " (ws-status ws))
|
|
|
|
|
(set! (.-onopen ws) #(audit log :system-a "opened " (ws-status ws)))
|
|
|
|
|
(set! (.-onclose ws) #(audit log :system-a "closed " (ws-status ws)))
|
2015-12-07 05:00:52 +00:00
|
|
|
ws))
|
|
|
|
|
|
|
|
|
|
(defn disconnect [ws]
|
2015-12-07 20:57:51 +00:00
|
|
|
(audit log :system-a "closing " (ws-status @ws))
|
|
|
|
|
(.close @ws)
|
|
|
|
|
(audit log :system-a "disconnecting " (ws-status @ws)))
|
2015-12-07 05:00:52 +00:00
|
|
|
|
|
|
|
|
(defstate system-a :start (connect (get-in @config [:system-a :uri]))
|
|
|
|
|
:stop (disconnect system-a))
|