Node's ws-client verbinden via een HTTP-proxyagent
Geef HttpsProxyAgent door aan de ws-constructor van Node, zodat de WebSocket-handshake via de forward-proxy loopt.
Het pakket ws van Node accepteert een HTTP-agent in zijn verbindingsopties. Voor een forward-proxy kan een ES-modulefragment HttpsProxyAgent gebruiken:
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);
});
Dit veronderstelt dat beide pakketten al deel uitmaken van de applicatie. De WebSocket-URL kiest de dienst, de agent-URL kiest de proxy. Een HTTP-adres uit de HTTP-proxylijst kan de agent-URL vullen voor een toegestane openbare WSS-test zonder proxyreferenties; controleer de toegang tot het werkelijke dienstendpoint.
HttpsProxyAgent zet een HTTP CONNECT-tunnel op en geeft het verbonden transport door aan de client. Het ondersteunt zowel WebSocket-verbindingen als HTTPS-verzoeken, dus de applicatie hoeft de CONNECT-uitwisseling niet zelf op te bouwen.
Ga verder met de gebruikelijke afhandeling van open, message en close in de applicatie. De gebeurtenis open markeert de voltooiing van de WebSocket-handshake op de gekozen route; alleen het JavaScript-object aanmaken heeft die niet voltooid.