Files
2026-05-09 22:22:19 +02:00

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)
}