From c3201141671619076d28d0d7d10ea0161c7439b8 Mon Sep 17 00:00:00 2001 From: Ryan O'Hara-Reid Date: Wed, 31 Oct 2018 14:33:20 +1100 Subject: [PATCH] Fix websocket API due to exchange update. Uncompresses binary messages. (#198) --- exchanges/okex/okex_websocket.go | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/exchanges/okex/okex_websocket.go b/exchanges/okex/okex_websocket.go index 5d396ea0..62e00198 100644 --- a/exchanges/okex/okex_websocket.go +++ b/exchanges/okex/okex_websocket.go @@ -1,8 +1,11 @@ package okex import ( + "bytes" + "compress/flate" "errors" "fmt" + "io/ioutil" "log" "net/http" "net/url" @@ -132,13 +135,31 @@ func (o *OKEX) WsReadData() { return default: - _, resp, err := o.WebsocketConn.ReadMessage() + mType, resp, err := o.WebsocketConn.ReadMessage() if err != nil { o.Websocket.DataHandler <- err return } + o.Websocket.TrafficAlert <- struct{}{} - o.Websocket.Intercomm <- exchange.WebsocketResponse{Raw: resp} + + var standardMessage []byte + + switch mType { + case websocket.TextMessage: + standardMessage = resp + + case websocket.BinaryMessage: + reader := flate.NewReader(bytes.NewReader(resp)) + standardMessage, err = ioutil.ReadAll(reader) + reader.Close() + if err != nil { + o.Websocket.DataHandler <- err + return + } + } + + o.Websocket.Intercomm <- exchange.WebsocketResponse{Raw: standardMessage} } } }