// listen on a zmq SUB socket // and shovel messages from it out to the websockets func zmqToWebsocket(subsocket zmq.Socket) { for { address, _ := subsocket.Recv(0) content, _ := subsocket.Recv(0) fmt.Println("received a zmq message") fmt.Println(string(address)) fmt.Println(string(content)) runningRoom.SendMessage(envelope{string(address), string(content)}) } }
// listen on a zmq SUB socket // and shovel messages from it out to the websockets func zmqToWebsocket(subsocket zmq.Socket) { for { address, _ := subsocket.Recv(0) content, _ := subsocket.Recv(0) log.WithFields(log.Fields{ "address": string(address), "content": string(content), }).Info("received a zmq message") runningRoom.SendMessage(envelope{string(address), string(content)}) } }
func dump(soc *zmq.Socket) { fmt.Println("----------------------------------------") for { // Process all parts of the message message, _ := soc.Recv(0) // Dump the message as text or binary fmt.Printf("[%03d] ", len(message)) if all_char.MatchString(message) { fmt.Print(message) } else { for i := 0; i < len(message); i++ { fmt.Printf("%02X ", message[i]) } } fmt.Println() more, _ := soc.GetRcvmore() if !more { break } } }
// send a message to the zmq PUB socket func sendMessage(reqsocket zmq.Socket, e envelope) { serialized_envelope, _ := json.Marshal(e) reqsocket.Send(string(serialized_envelope), 0) // wait for a reply reqsocket.Recv(0) }