O pacote ws do Node aceita um agente HTTP nas suas opções de conexão. Para um proxy de encaminhamento, um fragmento de módulo ES pode 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);
});

Isto pressupõe que ambos os pacotes já fazem parte da aplicação. O URL WebSocket escolhe o serviço; o URL do agente escolhe o proxy. Um endereço HTTP da lista de proxies HTTP pode preencher o URL do agente para um teste WSS público permitido sem credenciais de proxy; verifique o acesso ao endpoint real do serviço.

HttpsProxyAgent estabelece um túnel HTTP CONNECT e entrega o transporte ligado ao cliente. Suporta ligações WebSocket e pedidos HTTPS, pelo que a aplicação não precisa de construir a troca CONNECT por si.

Continue com o tratamento habitual de open, message e close na aplicação. O evento open marca a conclusão do handshake WebSocket na rota escolhida; criar apenas o objeto JavaScript não a concluiu.

Artigos relacionados