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'],
});

Используйте настоящий сервис Socket.IO. Агент Node согласует SOCKS; socks5h передаёт DNS назначения этому прокси. Возьмите подходящую конечную точку из списка прокси SOCKS5, когда тесты публичных сервисов через публичных посредников разрешены.

Polling может пройти до того, как последующее обновление до WebSocket завершится неудачей. Проверьте оба пути и любые transportOptions, переопределяющие агент верхнего уровня.

В примере намеренно используются эти два транспорта. WebTransport использует другую реализацию, а JavaScript, встроенный в браузер, подчиняется настройкам браузера. Обычная конечная точка WebSocket тоже не является сервером Socket.IO.

Сохраните существующую логику событий и переподключения, затем отключите клиент и освободите его агент после завершения соединений.

Похожие статьи