Le paquet ws de Node accepte un agent HTTP dans ses options de connexion. Pour un proxy frontal, un fragment de module ES peut utiliser 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);
});

Cela suppose que les deux paquets font déjà partie de l'application. L'URL WebSocket choisit le service ; l'URL de l'agent choisit le proxy. Une adresse HTTP issue de la liste de proxys HTTP peut remplir l'URL de l'agent pour un test WSS public autorisé sans identifiants de proxy ; vérifiez l'accès au point de terminaison réel du service.

HttpsProxyAgent établit un tunnel HTTP CONNECT et remet le transport connecté au client. Il prend en charge les connexions WebSocket comme les requêtes HTTPS, si bien que l'application n'a pas à construire elle-même l'échange CONNECT.

Poursuivez avec la gestion habituelle des open, message et close de l'application. L'événement open marque l'achèvement de la poignée de main WebSocket sur la route choisie ; créer seulement l'objet JavaScript ne l'a pas achevée.

Articles similaires