Gorilla WebSocket: HTTP CONNECT के लिए Dialer.Proxy कॉन्फ़िगर करें
किसी वैकल्पिक TCP पते को पूर्ण प्रॉक्सी टनल मानने के बजाय HTTP फ़ॉरवर्ड प्रॉक्सी के लिए Dialer.Proxy कॉन्फ़िगर करें।
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 पहचान जाँच इच्छित सर्वर पर लागू हो।