// // Simple request-reply broker. // package main import ( zmq "github.com/pebbe/zmq4" ) func main() { // Prepare our sockets frontend, _ := zmq.NewSocket(zmq.ROUTER) defer frontend.Close() backend, _ := zmq.NewSocket(zmq.DEALER) defer backend.Close() frontend.Bind("tcp://*:5559") backend.Bind("tcp://*:5560") // Initialize poll set poller := zmq.NewPoller() poller.Add(frontend, zmq.POLLIN) poller.Add(backend, zmq.POLLIN) // Switch messages between sockets for { sockets, _ := poller.Poll(-1) for _, socket := range sockets { switch s := socket.Socket; s { case frontend: for { msg, _ := s.Recv(0) if more, _ := s.GetRcvmore(); more { backend.Send(msg, zmq.SNDMORE) } else { backend.Send(msg, 0) break } } case backend: for { msg, _ := s.Recv(0) if more, _ := s.GetRcvmore(); more { frontend.Send(msg, zmq.SNDMORE) } else { frontend.Send(msg, 0) break } } } } } }