什么是 LaserStream WebSocket?
LaserStream WebSocket 是 LaserStream 的 WebSocket 协议变体。它提供标准的 Solana JSON-RPC 订阅方法(accountSubscribe, programSubscribe, logsSubscribe, signatureSubscribe, slotSubscribe, …),以及诸如 transactionSubscribe 的 Helius 特定扩展用于高级过滤——全部在同一统一 wss://mainnet.helius-rpc.com 端点上,并在与 gRPC 产品 相同的 LaserStream 后端上。
WebSockets 为您提供持久的实时连接:而不是反复轮询“是否有变化?”,区块链会在发生变化的那一刻通知您。
实时更新
当 Solana 帐户更改、交易发生或生成新区块时,立即收到通知
高效资源使用
一个持久连接,而不是轮询数百个 HTTP 请求
低延迟
比标准 Agave 基于 RPC 的 WebSockets 快最多 200 毫秒,由 LaserStream 提供服务
Helius 扩展
transactionSubscribe 和增强的 accountSubscribe 用于在标准 Solana 方法之上进行高级过滤端点
WebSockets ——包括标准 Solana 方法和 Helius 特定扩展 —— 都从每个网络的单一统一端点提供: 主网:wss://mainnet.helius-rpc.com/?api-key=<API_KEY>
测试网: wss://devnet.helius-rpc.com/?api-key=<API_KEY>
Gatekeeper (Beta)
要测试我们最快的 WebSocket 产品,可以试用新的 Gatekeeper (Beta) 端点:wss://beta.helius-rpc.com/?api-key=<API_KEY>
定价与计量
WebSocket 使用按未压缩流数据的 0.1 MB 计 2 个积分。打开连接费用为 1 个积分。 对于专业计划中的高负载工作,数据附加项提供可预测成本的月度数据限额(5TB至100TB)。数据附加项可以应用于LaserStream和WebSockets。特定于Helius的方法
transactionSubscribe 和 accountSubscribe(带有Helius过滤器)需要开发者、企业或专业计划。标准Solana方法如 programSubscribe、logsSubscribe 和 signatureSubscribe 在所有计划中都可用。核心概念
订阅类型
账户订阅
账户订阅
监控特定账户的更改,如钱包余额、代币账户或程序数据。用例:
- 钱包余额跟踪
- 代币账户监控
- 智能合约状态变化
- NFT所有权更新
程序订阅
程序订阅
监视特定程序拥有的所有账户的任何更改。用例:
- DEX交易监控
- DeFi协议跟踪
- NFT市场活动
- 游戏资产变化
交易订阅
交易订阅
当特定交易被确认或交易涉及某些账户时接收通知。用例:
- 支付确认
- 交易状态跟踪
- 多重签名批准
- 合约执行监控
插槽订阅
插槽订阅
监控区块链在插槽级别的进展和最终性。用例:
- 区块浏览器应用程序
- 网络健康监控
- 共识跟踪
- 性能分析
承诺等级
理解承诺等级对可靠应用至关重要:- 已处理
- 已确认
- 已完成
最快 - 交易已由验证器处理但未确认
- 延迟:约400毫秒
- 风险:可能被删除或重新排序
- 用于:实时UI更新(需谨慎)
想了解更多关于承诺级别的信息吗? 请阅读我们的综合博客文章:理解 Solana 承诺级别
可用的 WebSocket 方法
Helius 支持完整的 Solana WebSocket 订阅方法集,加上 Helius 特定的扩展。所有方法共享相同的wss://mainnet.helius-rpc.com 端点。
Helius 扩展
两种方法提供比 Solana 标准更丰富的过滤:transactionSubscribe— 订阅符合包含/排除/必需账户列表的交易、投票/失败标志和特定签名accountSubscribe— Helius 在标准accountSubscribe形状基础上添加高级过滤器
标准 Solana 方法
accountSubscribe, blockSubscribe, logsSubscribe, programSubscribe, rootSubscribe, signatureSubscribe, slotSubscribe, slotsUpdatesSubscribe, voteSubscribe 及其对应的 *Unsubscribe 配对。
完整 API 参考
探索所有 18+ WebSocket 方法。每种方法包括详细的参数、响应格式和示例。
如何实现重连逻辑
WebSocket 连接可能因多种原因断开 - 网络问题、服务器维护或临时中断。生产应用程序必须实现重连逻辑以确保可靠性。断开连接的原因
网络问题
网络问题
- 互联网连接问题
- 移动设备的 WiFi 切换
- 企业防火墙超时
- ISP 路由更改
服务器端事件
服务器端事件
- 计划的维护窗口
- 负载均衡器重启
- RPC 节点更新
- 临时过载保护
客户端问题
客户端问题
- 浏览器标签后台运行
- 移动应用暂停
- 计算机休眠/冬眠
- 进程崩溃或重启
检测断开连接
- JavaScript/Browser
- Node.js
重连策略
- 指数退避
- 断路器模式
测试重新连接逻辑
- 网络模拟
- 自动化测试
疑难解答
连接失败
连接失败
症状:WebSocket 无法初始连接解决方案:
- 确认您的 API key 正确并具有足够的配额
- 检查端点 URL 格式:
wss://mainnet.helius-rpc.com?api-key=YOUR_KEY - 确保防火墙允许 WebSocket 在端口 443 上的连接
- 先进行简单的 ping 测试以验证基本连接
频繁断开连接
频繁断开连接
症状:每隔几分钟连接就会断开解决方案:
- WebSockets 具有10 分钟不活动计时器。至少每分钟发送一次 ping,以保持连接活跃(请参阅上面的重新连接示例和WebSocket 常见问题解答)
- 实现正确的 ping/pong 心跳(如上面的重新连接示例所示)
- 检查您的网络稳定性和企业防火墙设置
- 监控您的订阅数量——过多可能导致不稳定
- 确认您正确处理了连接生命周期
消息丢失
消息丢失
症状:未接收到预期的订阅更新解决方案:
- 确认您的订阅已确认(检查响应)
- 确保您正在监控的账户/程序有实际活动
- 监控您的连接状态 - 丢失消息通常表示断开连接
高延迟
高延迟
症状:消息传递缓慢,更新延迟解决方案:
- 使用“confirmed”而不是“finalized”承诺
- 减少活跃订阅的数量
- 优化您的消息处理逻辑
- 考虑使用多个连接以分散负载
- 检查您的网络连接质量
内存泄漏
内存泄漏
症状:应用程序内存使用量随时间增长解决方案:
- 实现适当的订阅清理
- 在组件卸载时移除事件监听器
- 定期清除消息日志
- 监控订阅数量并强制限制
- 尽可能使用弱引用回调函数
从标准RPC迁移
如果您当前使用的是HTTP轮询,这是迁移到WebSockets的方法:增强功能
对于需要更高级功能的应用程序,请考虑使用LaserStream gRPC:24小时历史重播
在您的应用程序离线时补上错过的数据
多节点聚合
通过来自多个验证器的数据提高可靠性
更高吞吐量
处理更多订阅和更高的消息速率
企业功能
高级监控、分析和数据管道