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 升级失败。请检查两条路径,以及任何覆盖顶层 agent 的 transportOptions。
示例有意只使用这两种传输。WebTransport 采用另一套实现,浏览器内置的 JavaScript 则遵循浏览器配置。普通 WebSocket 端点同样不是 Socket.IO 服务器。
保留现有的事件与重连逻辑,然后在连接结束后断开客户端并释放其 agent。