From: qydysky Date: Sat, 24 Apr 2021 13:57:15 +0000 (+0800) Subject: websocket support proxy X-Git-Tag: v0.5.10 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=f4d4c463762f1331379ff6b55b5476da9feee736;p=part%2F.git websocket support proxy --- diff --git a/websocket/Client.go b/websocket/Client.go index 5d58982..e94a1e6 100644 --- a/websocket/Client.go +++ b/websocket/Client.go @@ -4,6 +4,7 @@ import ( "time" "errors" "net/http" + "net/url" "reflect" "github.com/gorilla/websocket" @@ -18,6 +19,7 @@ type Client struct { TO int Header map[string]string + Proxy string Ping Ping @@ -54,6 +56,7 @@ func New_client(config Client) (o *Client) { tmp.Header = config.Header if v := config.Func_normal_close;v != nil {tmp.Func_normal_close = v} if v := config.Func_abort_close;v != nil {tmp.Func_abort_close = v} + if v := config.Proxy;v != "" {tmp.Proxy = v} if config.Ping.Period != 0 {tmp.Ping = config.Ping} return &tmp } @@ -80,7 +83,16 @@ func (i *Client) Handle() (o *Client) { for k,v := range o.Header { tmp_Header.Set(k, v) } - c, _, err := websocket.DefaultDialer.Dial(o.Url, tmp_Header) + + dial := websocket.DefaultDialer + if o.Proxy != "" { + proxy := func(_ *http.Request) (*url.URL, error) { + return url.Parse(o.Proxy) + } + dial.Proxy = proxy + } + c, _, err := dial.Dial(o.Url, tmp_Header) + if err != nil {return} defer c.Close()