Подключение клиента ws из Node через HTTP-агент прокси
Передайте HttpsProxyAgent в конструктор ws из Node, чтобы рукопожатие WebSocket шло через форвардный прокси.
Пакет ws в Node принимает HTTP-агент в параметрах соединения. Для форвардного прокси фрагмент 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);
});
Предполагается, что оба пакета уже входят в приложение. URL WebSocket выбирает службу, а URL агента выбирает прокси. HTTP-адрес из списка HTTP-прокси может заполнить URL агента для разрешённого публичного теста WSS без учётных данных прокси; проверьте доступ к реальной конечной точке службы.
HttpsProxyAgent создаёт туннель HTTP CONNECT и передаёт подключённый транспорт клиенту. Он поддерживает соединения WebSocket и запросы HTTPS, поэтому приложению не нужно самостоятельно строить обмен CONNECT.
Продолжайте обычную обработку open, message и close в приложении. Событие open отмечает завершение рукопожатия WebSocket на выбранном маршруте; создание одного лишь объекта JavaScript его не завершило.