import { io } from 'socket.io-client';
import { SocksProxyAgent } from 'socks-proxy-agent';

const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const socket = io('https://events.example', {
  agent,
  transports: ['polling', 'websocket'],
});

Utilisez le véritable service Socket.IO. L'agent Node négocie SOCKS ; socks5h délègue le DNS de destination à ce proxy. Prenez un point de terminaison correspondant dans la liste de proxys SOCKS5 lorsque les tests sur des services publics via des intermédiaires publics sont autorisés.

Le polling peut réussir avant l'échec d'une mise à niveau WebSocket ultérieure. Inspectez les deux chemins et tout transportOptions qui remplace l'agent de premier niveau.

L'exemple emploie délibérément ces deux transports. WebTransport repose sur une autre implémentation, et le JavaScript fourni avec le navigateur suit la configuration du navigateur. Un simple point de terminaison WebSocket n'est pas non plus un serveur Socket.IO.

Conservez la logique existante d'événements et de reconnexion, puis déconnectez le client et libérez son agent une fois les connexions terminées.

Articles similaires