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 ઓળખ ચકાસણી ઇચ્છિત સર્વર પર લાગુ પડે.