LaserStream WebSocket とは?
LaserStream WebSocket は、LaserStream の WebSocket プロトコル版です。標準の Solana JSON-RPC サブスクリプションメソッド(accountSubscribe、programSubscribe、logsSubscribe、signatureSubscribe、slotSubscribe など)に加え、高度なフィルタリングに対応する transactionSubscribe などの Helius 固有の拡張機能を提供します。これらはすべて、同じ統合 wss://mainnet.helius-rpc.com エンドポイント、および gRPC 製品と同じ LaserStream バックエンド上で提供されます。
WebSocket により、永続的なリアルタイム接続を利用できます。「何か変更されたか?」と繰り返しポーリングする代わりに、何かが発生した瞬間にブロックチェーンから通知を受け取れます。
Real-Time Updates
Solana アカウントの変更、トランザクションの発生、新しいブロックの生成を即座に通知します
Efficient Resource Usage
数百件の HTTP リクエストをポーリングする代わりに、1 つの永続的な接続を使用します
Low Latency
LaserStream によって提供され、標準の Agave RPC ベースの WebSocket より最大 200 ms 高速です
Helius Extensions
標準の Solana メソッドに加え、高度なフィルタリングに対応する
transactionSubscribe と拡張版 accountSubscribe を利用できますエンドポイント
標準の Solana メソッドと Helius 固有の拡張機能の両方を含む WebSocket は、ネットワークごとに 1 つの統合エンドポイントから提供されます。 Mainnet:wss://mainnet.helius-rpc.com/?api-key=<API_KEY>
Devnet: wss://devnet.helius-rpc.com/?api-key=<API_KEY>
Gatekeeper(ベータ版)
最速の WebSocket サービスをテストするには、新しい Gatekeeper(ベータ版)エンドポイントをお試しください。wss://beta.helius-rpc.com/?api-key=<API_KEY>
料金と使用量計測
WebSocket の使用量は、圧縮されていないストリーミングデータ 0.1 MB あたり 2 クレジットとして計測されます。接続を開くには 1 クレジットかかります。 Professional プランで大容量のワークロードを処理する場合、Data Add-Ons により、予測可能なコストで月間データ容量(5TB~100TB)を利用できます。データアドオンは LaserStream と WebSocket に適用できます。Helius 固有のメソッド
transactionSubscribe と accountSubscribe(Helius フィルターを使用)には、Developer、Business、または Professional プランが必要です。programSubscribe、logsSubscribe、signatureSubscribe などの標準 Solana メソッドは、すべてのプランで利用できます。基本概念
サブスクリプションの種類
Account Subscriptions
Account Subscriptions
ウォレット残高、トークンアカウント、プログラムデータなど、特定のアカウントの変更を監視します。ユースケース:
- ウォレット残高の追跡
- トークンアカウントの監視
- スマートコントラクトの状態変更
- NFT 所有権の更新
Program Subscriptions
Program Subscriptions
特定のプログラムが所有するすべてのアカウントの変更を監視します。ユースケース:
- DEX 取引の監視
- DeFi プロトコルの追跡
- NFT マーケットプレイスのアクティビティ
- ゲームアセットの変更
Transaction Subscriptions
Transaction Subscriptions
特定のトランザクションが確認されたとき、または特定のアカウントを参照するトランザクションが発生したときに通知を受け取ります。ユースケース:
- 支払いの確認
- トランザクションステータスの追跡
- マルチシグ承認
- コントラクト実行の監視
Slot Subscriptions
Slot Subscriptions
スロットレベルでブロックチェーンの進行状況とファイナリティを監視します。ユースケース:
- ブロックエクスプローラーアプリケーション
- ネットワークの健全性監視
- コンセンサスの追跡
- パフォーマンス分析
コミットメントレベル
信頼性の高いアプリケーションを構築するには、コミットメントレベルを理解することが重要です。- Processed
- Confirmed
- Finalized
最速 - トランザクションはバリデーターによって処理されていますが、確認されていません
- レイテンシ:~400ms
- リスク:破棄または並べ替えられる可能性があります
- 用途:リアルタイムの UI 更新(注意が必要)
コミットメントレベルについて詳しく知りたいですか? 詳細なブログ記事をご覧ください:Solana のコミットメントレベルを理解する
利用可能な WebSocket メソッド
Helius は、Solana WebSocket サブスクリプションメソッド一式に加え、Helius 固有の拡張機能をサポートしています。すべてのメソッドで同じwss://mainnet.helius-rpc.com エンドポイントを使用します。
Helius 拡張機能
次の 2 つのメソッドは、Solana 標準より高度なフィルタリングを提供します。transactionSubscribe— 対象、除外、必須のアカウントリスト、投票/失敗フラグ、特定の署名に一致するトランザクションをサブスクライブしますaccountSubscribe— Helius は、標準のaccountSubscribe形式に高度なフィルターを追加します
標準 Solana メソッド
accountSubscribe、blockSubscribe、logsSubscribe、programSubscribe、rootSubscribe、signatureSubscribe、slotSubscribe、slotsUpdatesSubscribe、voteSubscribe、およびそれぞれに対応する *Unsubscribe のペアです。
Complete API Reference
18 種類以上の WebSocket メソッドをすべて確認できます。各メソッドには、詳細なパラメーター、レスポンス形式、例が含まれています。
再接続ロジックの実装方法
WebSocket 接続は、ネットワークの問題、サーバーメンテナンス、一時的な障害など、さまざまな理由で切断されることがあります。本番アプリケーションでは、信頼性を確保するために再接続ロジックを必ず実装してください。切断が発生する理由
Network Issues
Network Issues
- インターネット接続の問題
- モバイルデバイスでの Wi-Fi ハンドオフ
- 企業ファイアウォールのタイムアウト
- ISP ルーティングの変更
Server-Side Events
Server-Side Events
- 計画メンテナンス時間
- ロードバランサーの再起動
- RPC ノードの更新
- 一時的な過負荷保護
Client-Side Issues
Client-Side Issues
- ブラウザータブのバックグラウンド化
- モバイルアプリの一時停止
- コンピューターのスリープ/休止状態
- プロセスのクラッシュまたは再起動
切断の検出
- JavaScript/Browser
- Node.js
再接続戦略
- Exponential Backoff
- Circuit Breaker Pattern
再接続ロジックのテスト
- Network Simulation
- Automated Testing
トラブルシューティング
Connection Failed
Connection Failed
症状:WebSocket が最初から接続できません解決策:
- API キーが正しく、十分なクレジットがあることを確認します
- エンドポイントの URL 形式を確認します:
wss://mainnet.helius-rpc.com?api-key=YOUR_KEY - ファイアウォールがポート 443 での WebSocket 接続を許可していることを確認します
- まず単純な ping でテストし、基本的な接続を確認します
Frequent Disconnections
Frequent Disconnections
症状:数分おきに接続が切断されます解決策:
- WebSocket には 10 分間の非アクティブタイマーがあります。接続を維持するために、少なくとも 1 分に 1 回 ping を送信してください(上記の再接続例と WebSocket FAQ を参照してください)
- 適切な ping/pong ハートビートを実装します(上記の再接続例を参照してください)
- ネットワークの安定性と企業ファイアウォールの設定を確認します
- サブスクリプション数を監視します。多すぎると不安定になる可能性があります
- 接続ライフサイクルが適切に処理されていることを確認します
Missing Messages
Missing Messages
症状:想定されるサブスクリプション更新を受信できません解決策:
- サブスクリプションが確認済みであることを確認します(レスポンスを確認してください)
- 監視しているアカウント/プログラムで実際にアクティビティが発生していることを確認します
- 接続状態を監視します。メッセージの欠落は、多くの場合、切断を示しています
High Latency
High Latency
症状:メッセージ配信が遅く、更新に遅延があります解決策:
- コミットメントに「finalized」ではなく「confirmed」を使用します
- アクティブなサブスクリプション数を減らします
- メッセージ処理ロジックを最適化します
- 複数の接続を使用して負荷を分散することを検討します
- ネットワーク接続の品質を確認します
Memory Leaks
Memory Leaks
症状:アプリケーションのメモリ使用量が時間の経過とともに増加します解決策:
- 適切なサブスクリプションのクリーンアップを実装します
- コンポーネントのアンマウント時にイベントリスナーを削除します
- メッセージログを定期的に消去します
- サブスクリプション数を監視し、上限を適用します
- 可能な場合は、コールバック関数に弱参照を使用します
標準 RPC からの移行
現在 HTTP ポーリングを使用している場合は、次のように WebSocket に移行できます。拡張機能
さらに高度な機能が必要なアプリでは、LaserStream gRPC の使用を検討してください。24-Hour Historical Replay
アプリがオフラインだった間に受信できなかったデータを取得します
Multi-Node Aggregation
複数のバリデーターからデータを取得し、信頼性を向上させます
Higher Throughput
より多くのサブスクリプションと、より高いメッセージレートを処理します
Enterprise Features
高度な監視、分析、データパイプラインを利用できます