НОВОЕ: Helius приобретает Light Protocol
Enhanced WebSockets для Solana от Helius теперь работают на базе LaserStream
Блог/Обновления

Представляем Enhanced WebSockets нового поколения

Developer Experience Engineer0xIchigo в X0xIchigo в LinkedIn0xIchigo на GitHub
Чтение: 6 мин

Потоковая передача данных в реальном времени необходима для создания отзывчивых приложений на Solana. WebSockets уже давно служат основным протоколом для постоянного двунаправленного обмена данными, заменяя неэффективный HTTP-опрос единым соединением.

Хотя WebSockets предпочтительнее традиционного HTTP-опроса, они создают ряд проблем, способных снизить надежность. Это особенно критично в средах с высокой пропускной способностью, таких как Solana. Случайные разрывы соединений, недостаточная фильтрация и другие проблемы вынуждали разработчиков тратить много времени и сил на собственные решения, часто в ущерб развитию ключевых функций продукта.

В Helius мы давно знаем об этих проблемах. Ранее мы представили Enhanced WebSockets — более быстрый и гибко настраиваемый способ потоковой передачи обновлений транзакций и аккаунтов. Но по мере развития нашей инфраструктуры стало ясно, что даже эти улучшения не обеспечивают тот уровень устойчивости и производительности, который возможен с Helius.

Мы рады сообщить, что теперь Enhanced WebSockets работают на той же инфраструктуре, что и LaserStream — наш сервис потоковой передачи данных нового поколения на базе gRPC, созданный для высокой скорости, простоты и отказоустойчивости. 

Эта интеграция обеспечивает потокам WebSocket надежность уровня gRPC в нативном формате JSON, устраняет нестабильные соединения и позволяет frontend-разработчикам сосредоточиться на создании максимально удобного интерфейса.

Проблемы WebSockets и приложений реального времени

WebSockets обещают магию постоянного двунаправленного обмена данными: одно соединение для push-уведомлений вместо непрерывного опроса HTTP-эндпоинтов. Звучит привлекательно, но у WebSockets есть свои проблемы:

1. Нестабильность соединений и высокая нагрузка

WebSockets поддерживают длительные TCP-соединения с сохранением состояния. Поэтому они подвержены разрывам из-за кратковременных сетевых сбоев, тайм-аутов прокси или перегрузки серверов. 

Слоты Solana длительностью 400 мс и скачкообразный трафик усиливают уязвимости WebSocket. Поэтому для поддержания доступности разработчикам приходится реализовывать собственную логику переподключения, например экспоненциальную задержку повторных попыток и heartbeat-запросы.

2. Избыточный поток данных

Подписки WebSocket часто возвращают слишком много данных.

Нативные подписки, такие как accountSubscribe, передают нефильтрованные потоки, перегружая разработчиков лишними данными. В результате приходится фильтровать данные на стороне клиента, что может увеличить расход трафика и задержки обработки.

3. Масштабирование и расход ресурсов

Обработка тысяч одновременных соединений создает нагрузку на серверные ресурсы. Это приводит к утечкам памяти, ограничениям CPU, усложнению балансировки нагрузки и необходимости шардировать соединения для распределения нагрузки.

Горизонтально масштабировать WebSockets крайне сложно, и у большинства команд нет времени, ресурсов или опыта, чтобы довести этот процесс до совершенства. 

4. Время разработчиков уходит не на развитие продукта

В совокупности эти проблемы отнимают ресурсы у разработки новых уникальных функций и приложений. Такая неэффективность становится скрытым налогом на прогресс в быстро меняющейся экосистеме Solana.

Из-за этих постоянных проблем стандартные WebSockets Solana не подходят для промышленных приложений, где даже кратчайший сбой может привести к упущенным возможностям или устаревшим данным в интерфейсе.

Enhanced WebSockets нового поколения

Чтобы устранить эти недостатки, мы представили Enhanced WebSockets — улучшенную с помощью Geyser версию стандартных WebSockets Solana для более эффективных подписок на аккаунты и транзакции. 

В ней появились мощные фильтры (например, до 50 000 адресов через accountInclude, accountExclude и accountRequired) и более высокая скорость отклика по сравнению с традиционными WebSockets. Однако с момента первоначального запуска наша инфраструктура потоковой передачи данных стала значительно лучше.

Теперь Enhanced WebSockets работают на той же инфраструктуре, что и LaserStream — наш сервис потоковой передачи данных нового поколения на базе gRPC, созданный для высокой скорости, надежности и простоты.

Получите надежность gRPC в оболочке WebSocket.

Ключевые улучшения:

Максимальная устойчивость

Теперь Enhanced WebSockets одновременно передают данные с нескольких объединенных нод и автоматически переключаются при сбоях. Это повышает устойчивость, устраняя единые точки отказа и обеспечивая максимальную доступность.

Высокая производительность

LaserStream специально разработан для потоковой передачи данных со сверхнизкой задержкой. Теперь Enhanced WebSockets также используют наши новейшие улучшения, обеспечивая максимально быструю доставку уведомлений.

Потоки, оптимизированные для frontend

Полезные нагрузки JSON в Enhanced WebSockets, работающие на обновленной инфраструктуре, позволяют frontend-разработчикам напрямую интегрировать высокоточные потоки в браузеры, приложения React и мобильные клиенты.

Выбор подходящего решения для потоковой передачи: сравнение

В Helius есть несколько сервисов потоковой передачи данных для разных сценариев. Ниже мы описали каждый из них. 

Enhanced WebSockets

Разработчикам следует использовать Enhanced WebSockets, если:

  1. Задержка, непрерывность и корректность не влияют на PnL, исполнение сделок или риски
  2. Вам нужны полезные нагрузки JSON
  3. Вы хотите улучшить пользовательский интерфейс без усложнения backend
Сценарий использованияПримеры
Пользовательский интерфейс реального времени- Балансы кошельков
- Панели управления портфелем
- Уведомления в приложении
- Пользовательский интерфейс

LaserStream

Разработчикам следует использовать LaserStream, если:

  1. Важна каждая миллисекунда
  2. Задержка, непрерывность и корректность влияют на PnL, исполнение сделок и/или риски
  3. Вам нужны более продвинутые возможности фильтрации
  4. Вам нужна доставка без пропусков с автоматическим повторным воспроизведением
  5. Вам нужно получать транзакции на разных уровнях подтверждения
Сценарий использованияПримеры
Событийная обработка на backend- Системы торговли и управления рисками 
- Мониторинг цен и потока ордеров
- Отслеживание ликвидаций
- Системы для работы с несколькими площадками

Shred Delivery

Разработчикам следует использовать Shred Delivery, если:

  1. Вам нужны необработанные сигналы
  2. У вас есть или вы можете создать собственный конвейер сборки шредов

Если вам нужна задержка на уровне шредов, но у вас нет конвейера их сборки, Preprocessed Transactions передает декодированные шреды через WebSocket.

Сценарий использованияПримеры
Получение сигналов со сверхнизкой задержкой- Высокочастотная торговля
- Арбитраж между площадками
- Снайпинг токенов

Подведем итог:

  • Используйте Enhanced WebSockets для некритичных потоков, удобных для frontend.
  • Используйте LaserStream для циклов принятия решений на backend, где задержки или непрерывность данных напрямую влияют на возможности.
  • Используйте Shred Delivery, если у вас есть собственный конвейер сборки шредов и вам нужны самые ранние сигналы из необработанных шредов.

Быстрый старт с Enhanced WebSockets

Начать работу с Enhanced WebSockets очень просто. 

Для начала зарегистрируйтесь и получите ключ API в разделе «API Keys».

Просто подключитесь к одному из наших эндпоинтов, оформите подписку через transactionSubscribe или accountSubscribe и начните получать фильтрованные устойчивые потоки. 

Эндпоинты

  • Mainnet: wss://atlas-mainnet.helius-rpc.com/?api-key=<YOUR_API_KEY>
  • Mainnet (Gatekeeper Beta): wss://beta.helius-rpc.com/?api-key=<YOUR_API_KEY>
  • Devnet: wss://atlas-devnet.helius-rpc.com/?api-key=<YOUR_API_KEY>

Пример: мониторинг новых пулов Raydium Launchpad

Следующий скрипт Node.js — простой пример использования Enhanced WebSockets в промышленной среде. Он подписывается на программу Launchpad от Raydium через transactionSubscribe и с помощью разбора логов фильтрует успешные инициализации пулов:

Код
import WebSocket from 'ws';

const API_KEY = process.env.HELIUS_API_KEY; // Set your API key as an env var
const WS_URL = `wss://atlas-mainnet.helius-rpc.com/?api-key=${API_KEY}`;
const
RAYDIUM_LAUNCHPAD_PROG
= '
LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj
';

const ws = new WebSocket(WS_URL);

ws.on('open', () => {
  console.log('Connected to LaserStream-Powered Enhanced WebSockets!');
  ws.send(JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'transactionSubscribe',
    params: [
      {
        failed: false,
        accountInclude: [
RAYDIUM_LAUNCHPAD_PROG
]
      },
      {
        commitment: 'confirmed',
        encoding: 'jsonParsed',
        transactionDetails: 'full',
        maxSupportedTransactionVersion: 0
      }
    ]
  }));

  // Optional heartbeat ping
  setInterval(() => {
    if (ws.readyState === WebSocket.OPEN) {
      ws.send(JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method: 'ping' }));
    }
  }, 30000);
});

ws.on('message', (data) => {
  try {
    const payload = JSON.parse(data.toString());
    const result = payload.params?.result;
    if (!result) return;

    // Filter for init logs
    const logs = result.transaction.meta.logMessages || [];
    if (!logs.some(log => log.includes('Instruction: Initialize'))) return;

 const keys = result.transaction.transaction.message.accountKeys.map(k => k.pubkey);
    console.table({
      Signature: result.signature,
      Creator: keys[1],  // From IDL: accounts[1] is creator
      BaseMint: keys[7], // From IDL: base_mint is around index 7 in initialize accounts
      Slot: result.slot
    });

  } catch (err) {
    console.error('Message parse error:', err);
  }
});

ws.on('error', (err) => console.error('WebSocket error:', err));
ws.on('close', () => {
  console.log('Disconnected');
});

Запустите приведенный выше код командой:

Код
export HELIUS_API_KEY=your-api-key-here
node raydium-launchpad-stream.js

Этот скрипт будет выводить в консоль таблицу недавно запущенных пулов и обеспечивать доставку без пропусков даже при высокой нагрузке.

Тарифы и учет использования

В рамках постоянных инвестиций в снижение задержки и повышение надежности с 16 октября 2025 года в новых тарифах использование Enhanced WebSockets учитывается по той же ставке, что и LaserStream: 3 кредита за каждые 0,1 МБ переданных данных.

Владельцы тарифов Professional могут приобрести дополнительный объем данных по фиксированной ставке и использовать его для потоковой передачи данных через Enhanced WebSockets или LaserStream.

Если вы уже используете существующий тариф, его цена, лимиты и порядок оплаты не изменятся. Никаких действий не требуется. 

Стандартные WebSockets не изменились и доступны как на бесплатных, так и на платных тарифах.

Улучшите свои потоки уже сегодня

Надежность, производительность и простота — ваши потоки готовы масштабироваться вместе с вами. Начните создавать решения с Enhanced WebSockets уже сегодня. Зарегистрируйтесь, получите ключ API и оцените надежность интерфейсов.

Передавайте данные эффективнее, внедряйте инновации быстрее.

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях