За 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 идентичността за предвидения сървър.

Подобни статии