-
Notifications
You must be signed in to change notification settings - Fork 93
Open
Description
server
package main
import (
"fmt"
"math/rand"
"time"
czmq "github.com/zeromq/goczmq"
)
func main() {
pubEndpoint := "tcp://*:5556"
pubSock, err := czmq.NewPub(pubEndpoint)
if err != nil {
panic(err)
}
defer pubSock.Destroy()
pubSock.Bind(pubEndpoint)
for {
zipcode := rand.Intn(100000)
temperature := rand.Intn(215) - 85
relHumidity := rand.Intn(50) + 10
msg := fmt.Sprintf("%d %d %d", zipcode, temperature, relHumidity)
err := pubSock.SendFrame([]byte(msg), 0)
if err != nil {
panic(err)
}
fmt.Println("send", msg)
time.Sleep(time.Second * 10)
}
}
client
package main
import (
"fmt"
"strconv"
"strings"
czmq "github.com/zeromq/goczmq"
)
func main() {
pubEndpoint := "tcp://127.0.0.1:5556"
filter := ""
subSock, err := czmq.NewSub(pubEndpoint, filter)
if err != nil {
panic(err)
}
defer subSock.Destroy()
fmt.Printf("Collecting updates from weather server for %s…\n", filter)
subSock.Connect(pubEndpoint)
for i := 0; i < 100; i++ {
msg, _, err := subSock.RecvFrame()
if err != nil {
panic(err)
}
fmt.Println("recv msg", i, string(msg))
weatherData := strings.Split(string(msg), " ")
temperature, err := strconv.ParseInt(weatherData[1], 10, 64)
fmt.Println("recv temperature", temperature)
}
}
server output
send 5384 2 27
send 86137 -34 54
send 97726 52 41
send 12079 46 30
send 30493 126 29
send 98981 67 35
send 44885 105 47
send 73749 88 28
send 4384 53 34
send 64547 92 42
send 3616 -11 50
send 25786 -14 36
client output
recv msg 0 54425 55 16
recv temperature 55
recv msg 1 54425 55 16
recv temperature 55
recv msg 2 3300 -31 21
recv temperature -31
recv msg 3 3300 -31 21
recv temperature -31
recv msg 4 28162 64 38
recv temperature 64
recv msg 5 28162 64 38
recv temperature 64
Metadata
Metadata
Assignees
Labels
No labels