From 36a23911a8f7bece280dc672cc5a487a36be0b48 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sat, 11 May 2019 17:22:14 -0700 Subject: [PATCH] successfully sent a google protobuf over a gorilla websocket in a marshal'd binary form. echo protobuf works. Signed-off-by: Jeff Carr --- example-gorilla/client.go | 43 ++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/example-gorilla/client.go b/example-gorilla/client.go index 28ce18f..16a85aa 100644 --- a/example-gorilla/client.go +++ b/example-gorilla/client.go @@ -4,29 +4,39 @@ package main -import ( - "flag" - "log" - "net/url" - "os" - "os/signal" - "time" +import "flag" +import "log" +import "net/url" +import "os" +import "os/signal" +import "time" - "github.com/gorilla/websocket" -) +import "github.com/gorilla/websocket" + +import "github.com/golang/protobuf/proto" +import pb "git.wit.com/wit/witProtobuf" -// var addr = flag.String("addr", "localhost:8080", "http service address") var addr = flag.String("addr", "v000185.testing.com.customers.wprod.wit.com:9000", "http service address") func readConn(done chan struct{}, conn *websocket.Conn) { defer close(done) for { - _, message, err := conn.ReadMessage() + mytype, message, err := conn.ReadMessage() if err != nil { log.Println("read:", err) return } - log.Printf("recv: %s", message) + if (mytype == websocket.BinaryMessage) { + pdata := new(pb.Event) + err = proto.Unmarshal(message, pdata) + if (err != nil) { + log.Printf("readConn() something fucked up happened in Unmarshal") + } + log.Printf("recv binary: %s", pdata) + } else { + log.Printf("recv: %s", message) + // log.Printf("type, err = ", mytype, err) + } } } @@ -64,6 +74,15 @@ func main() { log.Println("write:", err) return } + + msg := pb.CreateSampleEvent() + msg.Name = "test echo over gorilla websocket" + data, _ := proto.Marshal(msg) + err2 := c.WriteMessage(websocket.BinaryMessage, data) + if err2 != nil { + log.Println("write:", err2) + return + } case <-interrupt: log.Println("interrupt")