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 を確認してください。
この例はあえてこの 2 つのトランスポートを使っています。WebTransport は別の実装を使い、ブラウザに同梱された JavaScript はブラウザの設定に従います。素の WebSocket エンドポイントも Socket.IO サーバーではありません。
既存のイベントと再接続のロジックはそのまま残し、接続が終わったらクライアントを切断してエージェントを解放してください。