HTTP फॉरवर्ड प्रॉक्सीसाठी Gorilla चे Dialer.Proxy कॉन्फिगर करा. 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 प्रॉक्सी डायलर मध्यस्थ कनेक्शन उघडतो आणि गंतव्यासाठी CONNECT पाठवतो. wss साठी, WebSocket handshake आधी स्थापित टनेलमधून गंतव्याचे TLS जाते.

NetDialContext खालच्या स्तराचे TCP कनेक्शन सानुकूलित करते. ते केवळ प्रॉक्सी पोर्टकडे निर्देशित केल्याने CONNECT अंमलात येत नाही. Proxy देखील सेट असल्यास, सानुकूल नेटवर्क कॉलबॅक मध्यस्थाशी जोडतो, तर प्रॉक्सी स्तर वाटाघाटी हाताळतो.

wss URL मध्ये गंतव्याचे होस्टनाव ठेवा जेणेकरून सामान्य TLS ओळख तपासणी इच्छित सर्व्हरवर लागू होईल.

संबंधित लेख