Node.js의 Socket.IO: polling과 WebSocket에 SOCKS 에이전트 사용
Socket.IO 서버 URL은 그대로 두고 업그레이드가 실패하면 전송 방식별 재정의를 확인하세요.
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 서버가 아닙니다.
기존 이벤트와 재연결 로직은 유지하고, 연결이 끝나면 클라이언트를 끊고 그 에이전트를 해제하세요.