Пакет 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 его не завершило.

Похожие статьи