55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/hex"
|
|
"fmt"
|
|
"time"
|
|
|
|
zmq "github.com/go-zeromq/zmq4"
|
|
)
|
|
|
|
func main() {
|
|
ctx := context.Background()
|
|
|
|
push := zmq.NewPush(ctx)
|
|
err := push.Dial("tcp://127.0.0.1:6001")
|
|
if err != nil {
|
|
fmt.Printf("push dial error: %v\n", err)
|
|
return
|
|
}
|
|
defer push.Close()
|
|
|
|
rep := zmq.NewRep(ctx)
|
|
err = rep.Dial("tcp://127.0.0.1:6002")
|
|
if err != nil {
|
|
fmt.Printf("rep dial error: %v\n", err)
|
|
return
|
|
}
|
|
defer rep.Close()
|
|
|
|
time.Sleep(500 * time.Millisecond)
|
|
|
|
err = push.Send(zmq.NewMsg([]byte("downlink message")))
|
|
if err != nil {
|
|
fmt.Printf("push send error: %v\n", err)
|
|
return
|
|
}
|
|
fmt.Printf("push sent: %s -> %s\n", "downlink message", hex.EncodeToString([]byte("downlink message")))
|
|
|
|
go func() {
|
|
for {
|
|
msg, err := rep.Recv()
|
|
if err != nil {
|
|
fmt.Printf("rep recv error: %v\n", err)
|
|
return
|
|
}
|
|
for _, frame := range msg.Frames {
|
|
fmt.Printf("rep received request: %s\n", hex.EncodeToString(frame))
|
|
}
|
|
rep.Send(zmq.NewMsg([]byte("reply from rep")))
|
|
}
|
|
}()
|
|
|
|
time.Sleep(1 * time.Second)
|
|
} |