(sub p topic ch) (sub p topic ch close?)
Subscribes a channel to a topic of a pub. By default the channel will be closed when the source closes, but can be determined by the close? parameter.
user=> (def c (chan 1))
#'user/c
user=> (def sub-c (pub c :route))
#'user/sub-c
user=> (def cx (chan 1))
#'user/cx
user=> (sub sub-c :up-stream cx)
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@526eb67f>
user=> (def cy (chan 1))
#'user/cy
user=> (sub sub-c :down-stream cy)
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@777692ac>
user=> (go-loop [_ (<! cx)]
(println "Got something coming up!"))
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@49e2e0f9>
user=> (go-loop [_ (<! cy)]
(println "Got something going down!"))
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@33498147>
user=> (put! c {:route :up-stream :data 123})
true
Got something coming up!
user=> (put! c {:route :down-stream :data 123})
Got something going down!
true