Asynchronous 堆芯异步-停止/恢复输送机

Asynchronous 堆芯异步-停止/恢复输送机,asynchronous,clojure,clojurescript,core.async,Asynchronous,Clojure,Clojurescript,Core.async,我试图在websocket周围制作一个包装器,最后制作了一个函数,将核心.async写入通道连接到websocket.send函数 (defn ch!>ws [ws write-ch] (go-loop [] (let [msg (<! write-ch)] (if msg (when (.send ws msg) (recur)))))) (defn ch!>ws[ws-write ch] (转到循环

我试图在websocket周围制作一个包装器,最后制作了一个函数,将
核心.async
写入通道
连接到websocket
.send
函数

(defn ch!>ws [ws write-ch]
  (go-loop []
    (let [msg (<! write-ch)]
      (if msg
        (when
          (.send ws msg)
          (recur))))))
(defn ch!>ws[ws-write ch]
(转到循环[]
(让[味精](
除了关闭websocket外,它工作正常。在这种情况下,我希望有更多的控制权。我可以决定缓冲一段时间,抛出异常,尝试重新连接

搜索后,当事件发生时,似乎无法停止侦听/开始侦听频道(例如,在我的示例中,websocket关闭/打开事件)

那么,使用
core.async
(在ClojureScript中)实现这一点是可能的,还是我必须自己滚动(可能在atom中创建一个队列并观察它)

那么,我如何设计我的程序,使其具有类似于输送机启动/停止的行为