+ if len(sub_port) > 0 {
+ sub_sock, err := ctx.Socket(zmq.Sub)
+ if err != nil {
+ panic(err)
+ }
+ defer func() { if r:= recover(); r != nil { sub_sock.Close(); panic(r) } }()
+
+ sub_sock.Subscribe([]byte("close"))
+ sub_sock.Subscribe([]byte("toggle"))
+ sub_sock.Subscribe([]byte("Info"))
+ sub_sock.Subscribe([]byte("State"))
+ sub_sock.Subscribe([]byte("open"))
+
+ if err = sub_sock.Connect(sub_port); err != nil {
+ panic(err)
+ }
+
+ sub_chans = sub_sock.ChannelsBuffer(10)
+ go zmqsHandleError(sub_chans)
+ } else {
+ sub_chans = nil