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。

相关文章