Fyrir HTTP-framsendingarproxy skaltu stilla Dialer.Proxy hjá Gorilla. WebSocket-slóðin er áfram áfangastaðurinn:

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)

Þessi bútur tilheyrir tengifalli forritsins, með net/url, net/http, time og github.com/gorilla/websocket tiltæk. Meðhöndlaðu err og hvert misheppnað handshake-svar, stýrðu síðan conn í gegnum venjulegan lífsferil skilaboða og lokunar. Fyrir leyfðan opinberan WSS-endapunkt veitir HTTP-proxylistinn frambjóðendur fyrir proxyURL.

HTTP-proxýdíalinn opnar milliliðatenginguna og sendir CONNECT fyrir áfangastaðinn. Fyrir wss fer TLS áfangastaðarins í gegnum rásina sem var komin á áður en WebSocket-handshake hefst.

NetDialContext sérsníður undirliggjandi TCP-tengingu. Að beina henni eingöngu að proxyporti útfærir ekki CONNECT. Þegar Proxy er einnig sett kallar sérsniðið netkall á milliliðinn, en proxy laginu annast samningaviðræðurnar.

Haltu vélarnafni áfangastaðarins í wss-slóðinni svo venjuleg TLS-auðkennisprófun eigi við um fyrirhugaðan netþjón.

Tengdir greinar