חיבור לקוח ws של Node דרך סוכן HTTP של פרוקסי
העברת HttpsProxyAgent לבנאי ws של Node כדי שלחיצת היד של WebSocket תעבור דרך פרוקסי ההעברה.
החבילה ws של Node מקבלת סוכן HTTP באפשרויות החיבור שלה. עבור פרוקסי העברה, קטע של מודול ES יכול להשתמש ב-HttpsProxyAgent:
import WebSocket from 'ws';
import { HttpsProxyAgent } from 'https-proxy-agent';
const agent = new HttpsProxyAgent('http://proxy.example.net:8080');
const socket = new WebSocket('wss://socket.example.net/events', {
agent,
});
socket.on('error', error => {
console.error(error.message);
});
הנחה זו מניחה ששתי החבילות כבר חלק מהאפליקציה. כתובת ה-WebSocket בוחרת את השירות, וכתובת הסוכן בוחרת את הפרוקסי. כתובת HTTP מתוך רשימת פרוקסי HTTP יכולה למלא את כתובת הסוכן לבדיקת WSS ציבורית מורשית בלי אישורי פרוקסי; יש לבדוק גישה לנקודת הקצה האמיתית של השירות.
HttpsProxyAgent מקים מנהרת HTTP CONNECT ומוסר ללקוח את התעבורה המחוברת. הוא תומך בחיבורי WebSocket ובבקשות HTTPS, ולכן האפליקציה אינה צריכה לבנות בעצמה את חילופי ה-CONNECT.
המשיכו בטיפול הרגיל של האפליקציה ב-open, ב-message וב-close. אירוע open מציין השלמה של לחיצת היד של WebSocket במסלול שנבחר; יצירת אובייקט ה-JavaScript לבדה לא השלימה אותה.