Gorilla WebSocket: налаштуйте Dialer.Proxy для HTTP CONNECT
Налаштуйте Dialer.Proxy для прямого HTTP-проксі, а не вважайте альтернативну TCP-адресу завершеним проксі-тунелем.
Для прямого HTTP-проксі налаштуйте Dialer.Proxy у Gorilla. URL WebSocket залишається пунктом призначення:
proxyURL, err := url.Parse("http://proxy.example:8080")
if err != nil {
return err
}
dialer := websocket.Dialer{
Proxy: http.ProxyURL(proxyURL),
HandshakeTimeout: 15 * time.Second,
}
conn, response, err := dialer.DialContext(
ctx, "wss://events.example/stream", nil)
Цей фрагмент належить до функції підключення застосунку, де доступні net/url, net/http, time і github.com/gorilla/websocket. Обробіть err і будь-яку невдалу відповідь handshake, потім керуйте conn через звичайний життєвий цикл повідомлень і закриття. Для дозволеної публічної кінцевої точки WSS список HTTP-проксі надає кандидатів для proxyURL.
Діалер HTTP-проксі відкриває проміжне з'єднання й надсилає CONNECT для пункту призначення. Для wss TLS пункту призначення проходить через встановлений тунель до handshake WebSocket.
NetDialContext налаштовує нижче TCP-з'єднання. Спрямування лише на порт проксі не реалізує CONNECT. Якщо Proxy також задано, користувацький мережевий callback з'єднується з посередником, а рівень проксі веде переговори.
Зберігайте ім'я хоста пункту призначення в URL wss, щоб звичайна перевірка ідентичності TLS застосовувалася до потрібного сервера.