HTTP forward proxy üçün Gorilla-nın Dialer.Proxy-sini konfiqurasiya edin. WebSocket URL təyinat olaraq qalır:

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)

Bu fraqment tətbiqin bağlantı funksiyasında olmalıdır; net/url, net/http, time və github.com/gorilla/websocket mövcuddur. err və uğursuz handshake cavabını idarə edin, sonra conn-u adi mesaj və bağlanma həyat dövrü ilə idarə edin. İcazəli ictimai WSS son nöqtəsi üçün HTTP proxy siyahısı proxyURL üçün namizədlər təqdim edir.

HTTP proxy dialer ara bağlantını açır və təyinat üçün CONNECT göndərir. wss üçün təyinat TLS-i qurulmuş tuneldən keçərək WebSocket handshake-indən əvvəl gəlir.

NetDialContext aşağı səviyyəli TCP bağlantısını fərdiləşdirir. Onu yalnız proxy portuna yönəltmək CONNECT-i tətbiq etmir. Proxy də təyin edildikdə, fərdi şəbəkə callback-i ara bağlantını yaradır, proxy qatı isə danışıqları idarə edir.

Təyinat host adını wss URL-də saxlayın ki, adi TLS şəxsiyyət yoxlaması nəzərdə tutulan serverə tətbiq olunsun.

Əlaqəli məqalələr