Gorilla WebSocket: اضبط Dialer.Proxy من أجل HTTP CONNECT
اضبط Dialer.Proxy لوكيل أمامي HTTP بدلًا من التعامل مع عنوان TCP بديل على أنه نفق وكيل مكتمل.
من أجل وكيل أمامي HTTP، اضبط Dialer.Proxy في Gorilla. يبقى عنوان WebSocket هو الوجهة:
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 وأي استجابة مصافحة فاشلة، ثم أدر conn عبر دورة حياة الرسائل والإغلاق المعتادة. لنقطة نهاية WSS عامة مسموح بها، توفّر قائمة وكلاء HTTP مرشحين لـ proxyURL.
يفتح موصّل وكيل HTTP الاتصال الوسيط ويرسل CONNECT إلى الوجهة. في حالة wss، يتبع TLS الخاص بالوجهة عبر النفق المنشأ قبل مصافحة WebSocket.
يخصص NetDialContext اتصال TCP الأدنى. توجيهه إلى منفذ وكيل وحده لا ينفذ CONNECT. وعندما يكون Proxy مضبوطًا أيضًا، يتصل رد النداء الشبكي المخصص بالوسيط، بينما تتولى طبقة الوكيل التفاوض.
أبقِ اسم مضيف الوجهة في عنوان wss كي ينطبق فحص هوية TLS المعتاد على الخادم المقصود.