Socket.IO sous Node.js : utiliser un agent SOCKS pour le polling et WebSocket
Conservez l'URL du serveur Socket.IO et examinez les surcharges par transport si la mise à niveau échoue.
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.