El paquete ws de Node acepta un agente HTTP en sus opciones de conexión. Para un proxy de reenvío, un fragmento de módulo ES puede usar 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);
});

Esto supone que ambos paquetes ya forman parte de la aplicación. La URL de WebSocket elige el servicio; la URL del agente elige el proxy. Una dirección HTTP de la lista de proxies HTTP puede rellenar la URL del agente para una prueba WSS pública permitida sin credenciales de proxy; comprueba el acceso al extremo real del servicio.

HttpsProxyAgent establece un túnel HTTP CONNECT y entrega el transporte conectado al cliente. Admite conexiones WebSocket y solicitudes HTTPS, así que la aplicación no necesita construir el intercambio CONNECT por su cuenta.

Continúa con el manejo habitual de open, message y close de la aplicación. El evento open marca la finalización del handshake de WebSocket en la ruta elegida; crear solo el objeto JavaScript no lo ha completado.

Artículos relacionados