Gorilla WebSocket: конфигурирайте Dialer.Proxy за HTTP CONNECT
Конфигурирайте Dialer.Proxy за HTTP forward прокси, вместо да третирате алтернативен TCP адрес като завършен прокси тунел.
За HTTP forward прокси конфигурирайте Dialer.Proxy на Gorilla. WebSocket URL остава дестинацията:
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 прокси dialer-ът отваря междинната връзка и изпраща CONNECT за дестинацията. При wss TLS на дестинацията преминава през установения тунел преди WebSocket handshake.
NetDialContext персонализира TCP връзката на по-ниско ниво. Насочването му само към прокси порт не реализира CONNECT. Когато Proxy също е зададен, персонализираният мрежов callback осъществява връзката с посредника, а прокси слоят води преговорите.
Запазете името на хоста на дестинацията в wss URL, за да важи обичайната проверка на TLS идентичността за предвидения сървър.