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 ਵਿਚੋਲੇ ਨਾਲ ਜੁੜਦਾ ਹੈ, ਜਦਕਿ ਪ੍ਰੌਕਸੀ ਪਰਤ ਗੱਲਬਾਤ ਸੰਭਾਲਦੀ ਹੈ।
wss URL ਵਿੱਚ ਮੰਜ਼ਿਲ ਦਾ ਹੋਸਟਨਾਮ ਰੱਖੋ ਤਾਂ ਜੋ ਆਮ TLS ਪਛਾਣ ਜਾਂਚ ਲੋੜੀਂਦੇ ਸਰਵਰ ਉੱਤੇ ਲਾਗੂ ਹੋਵੇ।