From f0abcd98e46a9b3ca61467a44dbd5cd37ac30ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B2=B3?= Date: Tue, 27 Nov 2018 16:49:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0gzip=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- http.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/http.go b/http.go index c536ff0..9f7cc74 100755 --- a/http.go +++ b/http.go @@ -1,8 +1,9 @@ package main -import ( +import ( "bufio" "bytes" + "compress/gzip" "encoding/binary" "errors" "fmt" @@ -75,8 +76,13 @@ func EncodeResponse(r *http.Response) ([]byte, error) { if err != nil { return nil, err } - binary.Write(raw, binary.LittleEndian, int32(len(respBytes))) - if err := binary.Write(raw, binary.LittleEndian, respBytes); err != nil { + var buf bytes.Buffer + zw := gzip.NewWriter(&buf) + zw.Write(respBytes) + zw.Close() + binary.Write(raw, binary.LittleEndian, int32(len(buf.Bytes()))) + if err := binary.Write(raw, binary.LittleEndian, buf.Bytes()); err != nil { + fmt.Println(err) return nil, err } return raw.Bytes(), nil @@ -84,8 +90,12 @@ func EncodeResponse(r *http.Response) ([]byte, error) { //// 将字节转为response func DecodeResponse(data []byte) (*http.Response, error) { - - resp, err := http.ReadResponse(bufio.NewReader(bytes.NewReader(data)), nil) + zr, err := gzip.NewReader(bytes.NewReader(data)) + if err != nil { + return nil, err + } + defer zr.Close() + resp, err := http.ReadResponse(bufio.NewReader(zr), nil) if err != nil { return nil, err }