Asynchronous 堆芯异步-停止/恢复输送机
我试图在websocket周围制作一个包装器,最后制作了一个函数,将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] (转到循环
核心.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中创建一个队列并观察它)
那么,我如何设计我的程序,使其具有类似于输送机启动/停止的行为