Node 的 ws 包在其连接选项中接受 HTTP agent。对于正向代理,ES 模块片段可以使用 HttpsProxyAgent:

import WebSocket from 'ws';
import { HttpsProxyAgent } from 'https-proxy-agent';

const agent = new HttpsProxyAgent('http://proxy.example.net:8080');
const socket = new WebSocket('wss://socket.example.net/events', {
  agent,
});

socket.on('error', error => {
  console.error(error.message);
});

这假设两个包都已经是应用的一部分。WebSocket URL 选择服务,agent URL 选择代理。来自HTTP 代理列表的 HTTP 地址可以在没有代理凭据的情况下填入 agent URL,用于获准的公开 WSS 测试;请确认能否访问实际的服务端点。

HttpsProxyAgent 建立 HTTP CONNECT 隧道,并把已连接的传输交给客户端。它同时支持 WebSocket 连接和 HTTPS 请求,因此应用无需自行构建 CONNECT 交换。

继续沿用应用通常的 open、message 和 close 处理。open 事件表示所选路由上的 WebSocket 握手已完成;仅创建 JavaScript 对象并没有完成它。

相关文章