Added Go example

This commit is contained in:
Florian Kinder 2020-05-05 14:00:08 +02:00
parent f03a0857cf
commit 4f58f2b3a2
3 changed files with 71 additions and 0 deletions

64
examples/Go/eddn.go Normal file
View File

@ -0,0 +1,64 @@
package main
import (
"bytes"
"compress/zlib"
"encoding/json"
"fmt"
"time"
"gopkg.in/zeromq/goczmq.v4"
)
type EDDN struct {
SchemaRef string `json:"$schemaRef"`
Header EDDNHeader `json:"header"`
Message json.RawMessage `json:"message"`
}
type EDDNHeader struct {
UploaderID string `json:"uploaderID"`
SoftwareName string `json:"softwareName"`
SoftwareVersion string `json:"softwareVersion"`
GatewayTimestamp time.Time `json:"gatewayTimestamp"`
}
func main() {
channel := goczmq.NewSubChanneler("tcp://eddn.edcd.io:9500", "")
defer channel.Destroy()
run := true
for run {
select {
case rawMessage, ok := <-channel.RecvChan:
if !ok {
run = false
continue
}
message, err := decodeMessage(rawMessage[0])
if err != nil {
fmt.Println(err.Error())
run = false
continue
}
fmt.Println(message.SchemaRef, message.Header.SoftwareName)
}
}
}
func decodeMessage(rawMessage []byte) (*EDDN, error) {
r, err := zlib.NewReader(bytes.NewReader(rawMessage))
if err != nil {
return nil, err
}
defer r.Close()
var message EDDN
err = json.NewDecoder(r).Decode(&message)
if err != nil {
return nil, err
}
return &message, nil
}

5
examples/Go/go.mod Normal file
View File

@ -0,0 +1,5 @@
module github.com/EDSM-NET/EDDN
go 1.14
require gopkg.in/zeromq/goczmq.v4 v4.1.0

2
examples/Go/go.sum Normal file
View File

@ -0,0 +1,2 @@
gopkg.in/zeromq/goczmq.v4 v4.1.0 h1:CE+FE81mGVs2aSlnbfLuS1oAwdcVywyMM2AC1g33imI=
gopkg.in/zeromq/goczmq.v4 v4.1.0/go.mod h1:h4IlfePEYMpFdywGr5gAwKhBBj+hiBl/nF4VoSE4k+0=