Helius宣布其增强型 WebSocket 现在由 LaserStream 提供支持,LaserStream 是一个为速度、简单性和容错能力而构建的下一代 gRPC 流服务。此集成在 JSON 原生格式中为 WebSocket 流提供 gRPC 级别的可靠性,消除了脆弱的连接,并使前端开发人员能够专注于提供最佳用户体验。
实时数据流对于在Solana上构建响应式应用程序至关重要。长期以来,WebSockets一直是实现持久、双向通信的首选协议,它用单一连接取代了效率低下的HTTP轮询。
虽然WebSockets比传统的HTTP轮询更理想,但它们也带来了一系列挑战,这些挑战可能会损害可靠性,这在Solana等高吞吐量环境中是有害的。从随机断开连接到不充分的过滤等问题,一直迫使开发人员投入大量时间和精力进行自定义缓解,这通常以牺牲核心产品创新为代价。
在Helius,我们长期以来一直认识到这些痛点。过去,我们推出了增强型WebSockets,这是一种更快、更可定制的流式传输交易和帐户更新的选项。然而,随着我们基础设施的发展,我们清楚地认识到,即使是这些增强功能,仍然无法达到Helius所能实现的弹性和性能。
我们很高兴地宣布,增强型WebSockets现在由与LaserStream相同的基础设施提供支持,LaserStream是我们为速度、简便性和容错性而构建的下一代gRPC流服务。
这种集成将gRPC级别的可靠性提供给JSON原生格式的WebSocket流,消除了脆弱的连接,并使前端开发人员能够专注于提供尽可能最佳的UX。
WebSockets承诺持久、双向的魔力——用一个连接代替不断轮询的HTTP端点来实现推送通知。虽然这听起来不错,但WebSockets并非没有问题:
WebSockets维护有状态的、长期的TCP连接。这使得它们容易受到网络故障、代理超时或服务器过载的干扰。
Solana的400msSlot时间和突发流量放大了WebSocket的漏洞。因此,开发人员被迫实施自定义重新连接逻辑,例如指数退避和心跳ping,以保持正常运行时间。
WebSocket订阅通常返回太多数据。
本机订阅,例如accountSubscribe
,提供未经过滤的流,使开发人员不堪重负。这迫使开发人员在客户端进行过滤,这可能会增加带宽使用并导致处理延迟。
处理数千个并发连接会给服务器资源带来压力,从而导致内存泄漏、CPU瓶颈、负载均衡器复杂性增加以及分片连接以管理负载的需求。
水平扩展WebSockets是出了名的困难,而且不是大多数团队有时间、资源或专业知识来完善的事情。
总的来说,这些挑战夺走了构建新的、差异化功能和应用程序的周期。这种低效率是对Solana快速发展领域的一种隐性税。
这些持续存在的挑战使得标准Solana WebSockets不足以用于生产级应用程序,即使是最短暂的中断也可能意味着错失机会或过时的UI。
我们推出了增强型WebSockets——Solana的标准WebSockets的Geyser增强版,用于更好地进行帐户和交易订阅——以解决这些差距。
它引入了强大的过滤器(例如,通过accountInclude
、accountExclude
和accountRequired
最多50,000个地址)以及比传统WebSockets更快的响应时间。但是,自最初发布以来,我们的数据流基础设施已得到改善。
增强型WebSockets现在由与LaserStream相同的基础设施提供支持——LaserStream是我们下一代gRPC流服务,专为速度、可靠性和简便性而构建。
现在,在WebSocket包装器中体验gRPC可靠性。
主要增强功能包括:
增强型WebSockets现在可以从多个聚合节点同时进行流式传输,并具有自动故障转移功能,从而消除了任何单点故障并确保了最长的运行时间,从而提高了弹性。
LaserStream专门用于超低延迟数据流,现在,增强型WebSockets将受益于我们的最新改进,以实现最快的通知。
增强型WebSockets的JSON有效负载(由升级的基础设施支持)使前端开发人员能够将高保真流直接集成到浏览器、React应用程序和移动客户端中。
在Helius,我们有针对特定用例构建的不同数据流服务,我们在下面进行了概述。
在以下情况下,开发人员应使用增强型WebSockets:
用例 | 示例 |
前端实时UX | - 钱包余额<br>- 投资组合仪表板<br>- 应用内通知<br>- 消费者UX |
在以下情况下,开发人员应使用LaserStream:
用例 | 示例 |
后端事件驱动处理 | - 交易和风险系统<br>- 价格和订单流监控器<br>- 清算观察器<br>- 跨场所引擎 |
在以下情况下,开发人员应使用Shred交付:
用例 | 示例 |
超低延迟信号捕获 | - 高频交易<br>- 跨场所套利<br>- Token狙击 |
总而言之:
开始使用增强型WebSockets非常简单。
首先,注册并在“API密钥”部分获取API密钥。
只需连接到我们的一个端点,通过transactionSubscribe
或accountSubscribe
进行订阅,然后开始接收经过过滤的弹性流。
增强型WebSockets适用于企业计划及以上。Solana的标准WebSockets可用于免费和付费计划。
wss://atlas-mainnet.helius-rpc.com/?api-key=<YOUR_API_KEY>
wss://atlas-devnet.helius-rpc.com/?api-key=<YOUR_API_KEY>
以下Node.js脚本是一个简单的示例,说明如何在生产环境中使用增强型WebSockets,使用transactionSubscribe
订阅Raydium的Launchpad程序,并通过日志解析来过滤成功的池初始化:
import WebSocket from 'ws';
const API_KEY = process.env.HELIUS_API_KEY; // 将你的API密钥设置为环境变量
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\
}\
]
}));
// 可选的心跳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;
// 过滤初始化日志
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], // 来自IDL:accounts[1]是创建者
BaseMint: keys[7], // 来自IDL:base_mint在初始化帐户中位于索引7附近
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个积分)。
专业版计划可以按固定费率购买额外的数据,这些数据可用于增强型WebSockets或LaserStream的数据流需求。
如果你使用现有计划,则你的定价、限制和账单完全保持不变。无需采取任何措施。
标准WebSockets保持不变,可用于免费和付费计划。
可靠性、性能和简便性——你的流已准备好与你一起扩展。立即开始使用增强型WebSockets进行构建。注册,获取API密钥,并在你的前端体验可靠性。
更智能地流式传输,更快地创新。
- 原文链接: helius.dev/blog/introduc...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!