Websocket: Есть ли поддержка socks5 для соединений через веб-сокеты?

Созданный на 10 нояб. 2017  ·  7Комментарии  ·  Источник: gorilla/websocket

Can gorilla establish websocket connections through a socks5 proxy? Может ли горилла устанавливать соединения через веб-сокеты через прокси-сервер socks5?

If not, is there a plan to do so? Если нет, то есть ли такой план?

Thank you! Благодарю вас!

en

Самый полезный комментарий

Как насчет того, чтобы добавить это поле в номеронабиратель?

// ProxyDialerFromURL returns a dialer given a Proxy URL specification and an underlying
// dialer for it to make network requests. The Dialer.Dial method defaults to using an HTTP
// proxy if ProxyDialerFromURL is nil or the function returns an unknown scheme error.
//
// The ProxyFromURL function in the package golang.org/x/net/proxy can be used as 
// a ProxyDialerFromURL function.
ProxyDialerFromURL func(u *url.URL, forward Dialer) (Dialer, error) 
en

Все 7 Комментарий

Вы можете подключиться через прокси-сервер socks5, установив в поле Dialer.NetDial метод Dial номеронабирателя SOCKS5 .

 netDialer, err := proxy.SOCKS5( .... )
 if err != nil {
    handle error
 }
 dialer := websocket.Dialer{NetDial: netDialer.Dial}
 c, r, err := dialer.Dial(url, nil)
 if err != nil {
    handle error
}
en

We use the http.ProxyFromEnvironment function to setup the Dialer.Proxy field . Мы используем функцию http.ProxyFromEnvironment для настройки поля Dialer.Proxy .

if proxy == nil {
    proxy = http.ProxyFromEnvironment
}

...

    dialer: websocket.Dialer{
        Proxy:            proxy,
        ...
    },

Would it be possible to support this out of the box since golang recently added support for SOCKS5 from the environment? Можно ли будет поддерживать это из коробки, поскольку golang недавно добавил поддержку SOCKS5 из среды? They have a similar implementation for the transport package here . У них аналогичная реализация для транспортного пакета здесь .

en

@vitreuz I don't want to add a dependency outside the standard library, nor do I want to vendor the x/net package as was done here . @vitreuz Я не хочу добавлять зависимость за пределами стандартной библиотеки и не хочу продавать пакет x/net, как это было сделано здесь .

I am open to suggestions on how to modify the Dialer to enable easy use of golang.org/x/net/proxy by applications. Я открыт для предложений о том, как изменить номеронабиратель, чтобы приложения могли легко использовать golang.org/x/net/proxy.

en

Как насчет того, чтобы добавить это поле в номеронабиратель?

// ProxyDialerFromURL returns a dialer given a Proxy URL specification and an underlying
// dialer for it to make network requests. The Dialer.Dial method defaults to using an HTTP
// proxy if ProxyDialerFromURL is nil or the function returns an unknown scheme error.
//
// The ProxyFromURL function in the package golang.org/x/net/proxy can be used as 
// a ProxyDialerFromURL function.
ProxyDialerFromURL func(u *url.URL, forward Dialer) (Dialer, error) 
en

@garyburd Your solution looks great. @garyburd Ваше решение выглядит великолепно. It will solve the problem of needing to support SOCKS5 in our particular library NOAA . Это решит проблему необходимости поддержки SOCKS5 в нашей конкретной библиотеке NOAA . @melnikalex What do you think? @melnikalex А ты как думаешь?

en

@garyburd I like it. @garyburd мне нравится. Thank you! Благодарю вас!

en

Another approach is to bundle the x/net/proxy package. Другой подход заключается в объединении пакета x/net/proxy . This avoids adding yet another knob to Dialer and is a much better option than vendoring all of x/net. Это позволяет избежать добавления еще одной ручки в номеронабиратель и является гораздо лучшим вариантом, чем продажа всего x/net.

en
Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

exapsy picture exapsy  ·  11Комментарии

bcashier picture bcashier  ·  8Комментарии

garyburd picture garyburd  ·  47Комментарии

guybrand picture guybrand  ·  19Комментарии

silbinarywolf picture silbinarywolf  ·  7Комментарии