Gorilla WebSocket: cấu hình Dialer.Proxy cho HTTP CONNECT
Cấu hình Dialer.Proxy cho proxy HTTP chuyển tiếp thay vì coi một địa chỉ TCP thay thế là đường hầm proxy đã hoàn tất.
Với proxy HTTP chuyển tiếp, hãy cấu hình Dialer.Proxy của Gorilla. URL WebSocket vẫn là đích:
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)
Đoạn này thuộc hàm kết nối của ứng dụng, với net/url, net/http, time và github.com/gorilla/websocket sẵn có. Xử lý err và mọi phản hồi handshake thất bại, sau đó quản lý conn qua vòng đời tin nhắn và đóng thông thường. Với một điểm cuối WSS công khai được phép, danh sách proxy HTTP cung cấp các ứng viên cho proxyURL.
Dialer của proxy HTTP mở kết nối trung gian và gửi CONNECT cho đích. Với wss, TLS của đích đi qua đường hầm đã thiết lập trước handshake WebSocket.
NetDialContext tùy chỉnh kết nối TCP cấp thấp hơn. Chỉ trỏ nó vào cổng proxy không triển khai CONNECT. Khi Proxy cũng được đặt, callback mạng tùy chỉnh kết nối với bên trung gian, còn lớp proxy xử lý việc thương lượng.
Giữ tên máy chủ đích trong URL wss để việc kiểm tra danh tính TLS thông thường áp dụng cho máy chủ dự định.