Gorilla WebSocket: ρυθμίστε το Dialer.Proxy για HTTP CONNECT
Ρυθμίστε το Dialer.Proxy για έναν HTTP forward proxy αντί να αντιμετωπίζετε μια εναλλακτική διεύθυνση TCP ως ολοκληρωμένη σήραγγα proxy.
Για έναν HTTP forward proxy, ρυθμίστε το Dialer.Proxy του Gorilla. Το 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 proxy παρέχει υποψηφίους για το proxyURL.
Ο dialer του HTTP proxy ανοίγει την ενδιάμεση σύνδεση και στέλνει CONNECT για τον προορισμό. Για wss, το TLS του προορισμού ακολουθεί μέσα από τη σήραγγα που έχει καθιερωθεί πριν από το handshake του WebSocket.
Το NetDialContext προσαρμόζει τη χαμηλότερου επιπέδου σύνδεση TCP. Η κατεύθυνσή του μόνο σε μια θύρα proxy δεν υλοποιεί CONNECT. Όταν έχει οριστεί και το Proxy, το προσαρμοσμένο callback δικτύου καλεί τον ενδιάμεσο, ενώ το επίπεδο proxy χειρίζεται τη διαπραγμάτευση.
Διατηρήστε το όνομα κεντρικού υπολογιστή προορισμού στο URL wss, ώστε ο κανονικός έλεγχος ταυτότητας TLS να εφαρμόζεται στον επιδιωκόμενο διακομιστή.