You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.7 KiB
83 lines
1.7 KiB
5 days ago
|
package main
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"net"
|
||
|
"time"
|
||
|
|
||
|
pb "gordenko.dev/dima/protolab/gen/service/v1"
|
||
|
|
||
|
"gordenko.dev/dima/protolab/bin"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
ServerAddr = "localhost:8080"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
conn, err := net.Dial("tcp", ServerAddr)
|
||
|
if err != nil {
|
||
|
log.Fatalf("net.Dial: %v\n", err)
|
||
|
}
|
||
|
defer conn.Close()
|
||
|
|
||
|
log.Println("connected to server")
|
||
|
|
||
|
for {
|
||
|
// PING
|
||
|
pingReq := &pb.RequestWrapper{
|
||
|
Payload: &pb.RequestWrapper_Ping{
|
||
|
Ping: &pb.PingRequest{
|
||
|
Timestamp: time.Now().Unix(),
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
err = bin.WriteMessage(conn, pingReq)
|
||
|
if err != nil {
|
||
|
log.Fatalf("send ping: %v", err)
|
||
|
} else {
|
||
|
log.Println("ping sent")
|
||
|
}
|
||
|
|
||
|
var pingResp pb.ResponseWrapper
|
||
|
err = bin.ReadMessage(conn, &pingResp)
|
||
|
if err != nil {
|
||
|
log.Fatalf("read ping response: %v", err)
|
||
|
}
|
||
|
if resp := pingResp.GetPingResp(); resp != nil {
|
||
|
log.Printf("pong received, server time: %s\n",
|
||
|
time.Unix(resp.GetServerTimestamp(), 0).Format(time.RFC3339))
|
||
|
}
|
||
|
|
||
|
time.Sleep(3 * time.Second)
|
||
|
// TELEMETRY
|
||
|
telemetryReq := &pb.RequestWrapper{
|
||
|
Payload: &pb.RequestWrapper_SendTelemetry{
|
||
|
SendTelemetry: &pb.TelemetryData{
|
||
|
DeviceId: "device-123",
|
||
|
Timestamp: time.Now().Unix(),
|
||
|
Temperature: 25,
|
||
|
BatteryLevel: 70,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
err = bin.WriteMessage(conn, telemetryReq)
|
||
|
if err != nil {
|
||
|
log.Fatalf("send telemetry: %v", err)
|
||
|
} else {
|
||
|
log.Println("telemetry sent")
|
||
|
}
|
||
|
|
||
|
var telemetryResp pb.ResponseWrapper
|
||
|
err = bin.ReadMessage(conn, &telemetryResp)
|
||
|
if err != nil {
|
||
|
log.Fatalf("bin.ReadMessage: %v", err)
|
||
|
}
|
||
|
if resp := telemetryResp.GetTelemetryResp(); resp != nil {
|
||
|
log.Printf("server response on TelemetryData: %s\n", resp.GetResultCode().String())
|
||
|
}
|
||
|
time.Sleep(3 * time.Second)
|
||
|
}
|
||
|
}
|