Gorilla WebSocket: HTTP CONNECT үчүн Dialer.Proxy конфигурациялоо
Альтернативадуу TCP дарегин бүткөн прокси туннели деп эсептөөнүн ордуна, HTTP forward прокси үчүн Dialer.Proxy конфигурациялаңыз.
HTTP forward прокси үчүн 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 прокси dialer ортомчу байланышты ачат жана бара турган жерге CONNECT жөнөтөт. wss үчүн бара турган жердин TLS'и WebSocket handshake алдында түзүлгөн туннелден өтөт.
NetDialContext төмөнкү деңгээлдеги TCP байланышын ыңгайлаштырат. Аны жалаң прокси портуна багыттоо CONNECT'ти ишке ашырбайт. Proxy да коюлган болсо, ыңгайлаштырылган тармак callback ортомчуга туташат, ал эми прокси катмары сүйлөшүүлөрдү жүргүзөт.
Бара турган жердин хост атын wss URL'де сактаңыз, ошондо кадимки TLS инсандык текшерүү көздөлгөн серверге колдонулат.