Node-ws-Client über einen HTTP-Proxy-Agent verbinden
HttpsProxyAgent an den ws-Konstruktor von Node übergeben, damit der WebSocket-Handshake über den Forward-Proxy läuft.
Das Paket ws von Node nimmt in seinen Verbindungsoptionen einen HTTP-Agent an. Für einen Forward-Proxy kann ein ES-Modulfragment HttpsProxyAgent verwenden:
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);
});
Das setzt voraus, dass beide Pakete bereits Teil der Anwendung sind. Die WebSocket-URL wählt den Dienst, die Agent-URL den Proxy. Eine HTTP-Adresse aus der HTTP-Proxy-Liste kann die Agent-URL für einen erlaubten öffentlichen WSS-Test ohne Proxy-Zugangsdaten füllen; prüfen Sie den Zugang zum tatsächlichen Dienstendpunkt.
HttpsProxyAgent baut einen HTTP-CONNECT-Tunnel auf und übergibt den verbundenen Transport an den Client. Er unterstützt WebSocket-Verbindungen ebenso wie HTTPS-Anfragen, sodass die Anwendung den CONNECT-Austausch nicht selbst aufbauen muss.
Fahren Sie mit der üblichen Behandlung von open, message und close in der Anwendung fort. Das Ereignis open zeigt den Abschluss des WebSocket-Handshakes auf der gewählten Route an; allein das Erzeugen des JavaScript-Objekts hat ihn nicht abgeschlossen.