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.

Ähnliche Artikel