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-യും സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ഇഷ്ടാനുസൃത നെറ്റ്വർക്ക് callback ഇടനിലക്കാരനുമായി ബന്ധപ്പെടുന്നു; പ്രോക്സി പാളി ചർച്ചകൾ കൈകാര്യം ചെയ്യുന്നു.
ഉദ്ദേശിച്ച സെർവറിന് സാധാരണ TLS ഐഡന്റിറ്റി പരിശോധന ബാധകമാകാൻ wss URL-ൽ ലക്ഷ്യസ്ഥാനത്തിന്റെ ഹോസ്റ്റ്നാമം നിലനിർത്തുക.