核心异步 - 停止/恢复传送带

时间:2016-03-14 16:15:48

标签: asynchronous clojure clojurescript core.async

我正在尝试围绕websockets创建一个包装器,最后我创建了一个函数来将core.async write-channel“连接”到websocket .send函数。

(defn ch!>ws [ws write-ch]
  (go-loop []
    (let [msg (<! write-ch)]
      (if msg
        (when
          (.send ws msg)
          (recur))))))

除非关闭websocket,否则它可以正常工作。在这种情况下,我希望有更多的控制权。我可以决定缓冲一段时间,抛出异常,试图重新连接..

搜索后看起来似乎无法在事件发生时停止收听/开始收听频道(例如在我的情况下是websocket关闭/打开事件)。

因此可以使用core.async(在ClojureScript中)完成此操作,或者我必须自己滚动(可能在原子中排队并观察它)?

那么如何设计我的程序以使其具有类似于传送带启动/停止的行为?

0 个答案:

没有答案