新消息:Helius 收购 Light Protocol
Helius 的增强型 Solana WebSockets 现已由 LaserStream 提供支持
博客/更新

发布:下一代增强型 WebSockets

Developer Experience EngineerX 上的 0xIchigoLinkedIn 上的 0xIchigoGitHub 上的 0xIchigo
阅读需 6 分钟

实时数据流对于在 Solana 上构建响应迅速的应用至关重要。长期以来,WebSockets 一直是实现持久双向通信的首选协议,通过单一连接取代低效的 HTTP 轮询。

与传统 HTTP 轮询相比,WebSockets 是更理想的选择,但也会带来一系列可能削弱可靠性的挑战,这在 Solana 这样的高吞吐量环境中尤其不利。从随机断连到过滤能力不足等问题,过去一直迫使开发者投入大量时间和精力实施自定义缓解措施,往往因此牺牲核心产品创新。

Helius 很早就意识到了这些痛点。过去,我们推出了增强型 WebSockets,为交易和账户更新流提供速度更快、自定义能力更强的选择。但随着基础设施不断演进,我们发现,即使有了这些增强功能,仍未能达到 Helius 所能提供的韧性和性能水平。

我们很高兴地宣布,增强型 WebSockets 现已由支持 LaserStream 的同一套基础设施提供支持。LaserStream 是我们专为速度、简洁性和容错能力打造的下一代 gRPC 流服务。 

这项集成以原生 JSON 格式为 WebSocket 流带来 gRPC 级可靠性,消除脆弱的连接,让前端开发者可以专注于提供尽可能出色的用户体验。

WebSockets 与实时应用面临的挑战

WebSockets 承诺带来持久双向通信的魔力——只需一个连接即可接收推送通知,无需持续轮询 HTTP 端点。 这听起来很美好,但 WebSockets 并非没有问题:

1. 连接脆弱且负载沉重

WebSockets 维持有状态的长期 TCP 连接。因此,网络短暂波动、代理超时或服务器过载都可能导致连接中断。 

Solana 400ms 的槽位时间和突发流量进一步放大了 WebSocket 的脆弱性。因此,开发者不得不实现自定义重连逻辑,例如指数退避和心跳 ping,以维持正常运行。

2. 数据泛滥

WebSocket 订阅通常会返回过多数据。

accountSubscribe 等原生订阅会提供未经筛选的数据流,让开发者淹没在大量噪声中。这迫使开发者在客户端进行过滤,可能增加带宽用量并带来处理延迟。

3. 可扩展性与资源开销

处理数千个并发连接会给服务器资源带来巨大压力,导致内存泄漏、CPU 瓶颈、负载均衡器复杂度上升,并需要对连接进行分片来管理负载。

WebSockets 的横向扩展出了名地困难,而且大多数团队都没有足够的时间、资源或专业能力将其做到完善。 

4. 产品创新时间被占用

这些挑战叠加在一起,会挤占构建全新差异化功能和应用的时间。在快速发展的 Solana 生态中,这种低效率成为阻碍进步的隐性成本。

这些长期存在的挑战使标准 Solana WebSockets 无法满足生产级应用的需求。在这类应用中,即使极其短暂的中断也可能意味着错失机会或 UI 数据过时。

下一代增强型 WebSockets

为了解决这些不足,我们推出了增强型 WebSockets——通过 Geyser 增强的 Solana 标准 WebSockets,可提供更出色的账户和交易订阅体验。 

它引入了强大的过滤器(例如通过 accountInclude、accountExclude 和 accountRequired 支持最多 50,000 个地址),响应速度也快于传统 WebSockets。不过,自最初发布以来,我们的数据流基础设施已经得到显著改进。

增强型 WebSockets 现已由与 LaserStream 相同的基础设施提供支持。LaserStream 是我们专为速度、可靠性和简洁性打造的下一代 gRPC 流服务。

现在,你可以在 WebSocket 封装中体验 gRPC 的可靠性。

主要增强功能包括:

一流的韧性

增强型 WebSockets 现在可同时从多个聚合节点传输数据,并支持自动故障转移。通过消除任何单点故障,它提升了系统韧性,并确保最长正常运行时间。

高性能

LaserStream 专为超低延迟数据流而构建。现在,增强型 WebSockets 也将受益于我们的最新改进,以尽可能快的速度发送通知。

针对前端优化的数据流

增强型 WebSockets 由升级后的基础设施提供支持,其 JSON 载荷让前端开发者能够将高保真数据流直接集成到浏览器、React 应用和移动客户端中。

选择合适的流解决方案:对比

Helius 提供针对特定使用场景构建的不同数据流服务,具体如下。 

增强型 WebSockets

以下情况应使用增强型 WebSockets:

  1. 延迟、连续性和正确性不会影响 PnL、成交或风险
  2. 你希望使用 JSON 载荷
  3. 你专注于消费者用户体验,不希望引入后端复杂性
使用场景示例
前端实时用户体验- 钱包余额
- 投资组合仪表板
- 应用内通知
- 消费者用户体验

LaserStream

以下情况应使用 LaserStream:

  1. 每一毫秒都至关重要
  2. 延迟、连续性和正确性会影响 PnL、成交和/或风险
  3. 你需要更高级的过滤能力
  4. 你需要支持自动重放的无间断传输
  5. 你需要接收不同确认级别的交易
使用场景示例
后端事件驱动处理- 交易与风险系统 
- 价格和订单流监控器
- 清算监控器
- 跨交易场所引擎

Shred Delivery

以下情况应使用 Shred Delivery:

  1. 你需要原始信号
  2. 你已有或能够构建自定义 shred 重组管线

如果你希望获得 shred 级延迟,但没有 shred 重组管线,可以改用 Preprocessed Transactions,通过 WebSocket 接收解码后的 shred。

使用场景示例
超低延迟信号捕获- 高频交易
- 跨交易场所套利
- 代币抢购

总结如下:

  • 使用增强型 Websockets 获取前端友好、非关键的数据流。
  • 对于延迟缺口或数据连续性会直接影响机会的后端决策循环,使用 LaserStream。
  • 如果你使用自定义 shred 重组管线,并希望尽早获取原始 shred 中的信号,请使用 Shred Delivery。

增强型 WebSockets 快速入门

开始使用增强型 WebSockets 非常简单。 

首先,注册并在“API Keys”部分获取 API 密钥。

只需连接到我们的一个端点,通过 transactionSubscribe 或 accountSubscribe 订阅,即可开始接收经过过滤且具有韧性的数据流。 

端点

  • 主网:wss://atlas-mainnet.helius-rpc.com/?api-key=<YOUR_API_KEY>
  • 主网(Gatekeeper 测试版):wss://beta.helius-rpc.com/?api-key=<YOUR_API_KEY>
  • 开发网:wss://atlas-devnet.helius-rpc.com/?api-key=<YOUR_API_KEY>

示例:监控新的 Raydium Launchpad 池

以下 Node.js 脚本是一个简单示例,展示了如何在生产环境中使用增强型 WebSockets,通过 transactionSubscribe 订阅 Raydium 的 Launchpad 程序,并解析日志来筛选成功初始化的池:

代码
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

以下脚本会将新启动的池以表格形式持续输出到控制台,即使在高负载下也能确保无间断传输。

定价与计量

作为我们持续投资于低延迟和可靠性的一部分,从 2025 年 10 月 16 日起,新计划将按与 LaserStream 相同的费率计量增强型 WebSockets(即每传输 0.1 MB 数据消耗 3 个积分)。

Professional 计划可按固定费率购买额外数据,用于满足增强型 WebSockets 或 LaserStream 的数据流需求。

如果你正在使用现有计划,定价、限额和计费方式将完全保持不变。无需采取任何操作。 

标准 WebSockets 保持不变,同时面向 Free 和付费计划提供。

立即升级你的数据流

可靠、快速、简单——你的数据流已准备好与你一同扩展。立即开始使用增强型 WebSockets 构建应用。注册、获取 API 密钥,并让你的前端体验可靠性。

更智能地传输,更快速地创新。

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新