LaserStream WebSocketとは?
LaserStream WebSocketは、LaserStream のWebSocketプロトコル版です。標準のSolana JSON-RPCサブスクリプションメソッド(accountSubscribe, programSubscribe, logsSubscribe, signatureSubscribe, slotSubscribe, …)をHelius専用の拡張機能と共に提供し、高度なフィルタリングのためのtransactionSubscribeなど、同じ統合エンドポイントwss://mainnet.helius-rpc.comで提供されています。
WebSocketは持続的でリアルタイムな接続を提供します。つまり、「何か変わったか?」と繰り返しポーリングするのではなく、何かが起こるとすぐにブロックチェーンが通知します。
リアルタイム更新
Solanaアカウントが変わったり、トランザクションが発生したり、新しいブロックが生成されると即座に通知を受け取ります。
効率的なリソース使用
数百のHTTPリクエストをポーリングする代わりに、1つの持続的な接続
低レイテンシー
標準のAgave RPCベースのWebSocketより最大で200 ms速く、LaserStreamによって提供
Helius拡張
transactionSubscribeと標準Solanaメソッド上に高度なフィルタリングのための拡張accountSubscribeエンドポイント
WebSocketは標準のSolanaメソッドとHelius専用拡張機能の両方で、ネットワークごとに単一の統一エンドポイントから提供されます: メインネット:wss://mainnet.helius-rpc.com/?api-key=<API_KEY>
開発ネット: 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プランの高ボリュームワークロードには、予測可能なコストで月次データ許容量(5TB〜100TB)を提供するデータアドオンをご利用いただけます。データアドオンはLaserStreamとWebSocketに適用できます。Helius専用メソッド
transactionSubscribeとaccountSubscribe(Heliusフィルタを含む)は、Developer、Business、またはProfessional プランが必要です。標準SolanaメソッドprogramSubscribe、logsSubscribe、とsignatureSubscribeはすべてのプランで利用できます。コアコンセプト
サブスクリプションタイプ
アカウントサブスクリプション
アカウントサブスクリプション
特定のアカウントの変更(ウォレット残高、トークンアカウント、プログラムデータなど)を監視します。ユースケース:
- ウォレット残高の追跡
- トークンアカウントの監視
- スマートコントラクトの状態変更
- NFT所有権の更新
プログラムサブスクリプション
プログラムサブスクリプション
特定のプログラムが所有するすべてのアカウントを監視し、変更を見守ります。ユースケース:
- DEX取引の監視
- DeFiプロトコルトラッキング
- NFTマーケットプレイスの活動
- ゲーム資産の変更
トランザクションサブスクリプション
トランザクションサブスクリプション
特定のトランザクションが承認された際、または特定のアカウントに関連するトランザクションが発生した際に通知を受け取ります。ユースケース:
- 支払い確認
- トランザクションステータストラッキング
- マルチシグネチャ承認
- コントラクト実行の監視
スロットサブスクリプション
スロットサブスクリプション
ブロックチェーンの進行状況とファイナリティをスロットレベルで監視します。ユースケース:
- ブロックエクスプローラーアプリケーション
- ネットワークの健康状態の監視
- コンセンサストラッキング
- パフォーマンス分析
コミットメントレベル
コミットメントレベルを理解することは信頼性の高いアプリケーションにとって重要です:- Processed
- Confirmed
- Finalized
最速 - バリデーターによって処理されたが確認されていないトランザクション
- レイテンシー:約400ms
- リスク:取り消しや順序変更の可能性
- 用途:リアルタイムUI更新(注意が必要)
コミットメントレベルについてもっと知りたいですか? 詳細なブログポストをお読みください:Solana Commitment Levelsの理解
利用可能な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ペア。
完全なAPIリファレンス
18以上のWebSocketメソッドを探索。各メソッドには詳細なパラメータ、応答フォーマット、例が含まれています。
再接続ロジックの実装方法
WebSocket接続は、ネットワーク問題、サーバーメンテナンス、または一時的な障害など、さまざまな理由で切断されることがあります。本番アプリケーションは、信頼性を確保するために再接続ロジックを実装する必要があります。切断が発生する理由
ネットワーク問題
ネットワーク問題
- インターネット接続の問題
- モバイルデバイスでのWiFiハンドオフ
- 企業ファイアウォールのタイムアウト
- ISPルーティングの変更
サーバー側イベント
サーバー側イベント
- 計画されたメンテナンス期間
- ロードバランサの再起動
- RPCノードの更新
- 一時的なオーバーロード保護
クライアント側の問題
クライアント側の問題
- ブラウザタブのバックグラウンド化
- モバイルアプリのサスペンド
- コンピュータのスリープ/ハイバーネーション
- プロセスクラッシュや再起動
切断の検出
- JavaScript/ブラウザ
- Node.js
再接続戦略
- 指数バックオフ
- サーキットブレーカーパターン
再接続ロジックのテスト
- ネットワークシミュレーション
- 自動テスト
トラブルシューティング
接続失敗
接続失敗
症状: WebSocketが最初に接続に失敗解決策:
- APIキーが正しく、十分なクレジットを持っていることを確認する
- エンドポイントURLの形式を確認する:
wss://mainnet.helius-rpc.com?api-key=YOUR_KEY - WebSocket接続がポート443で許可されていることをファイアウォールで確認する
- 基本的な接続性を確認するために、まずシンプルなpingを試す
頻繁な切断
頻繁な切断
症状: 数分ごとに接続が切れる解決策:
- WebSocketは10分の非アクティブタイマーを持っています。接続を維持するために少なくとも1分ごとにpingを送信する(上記の再接続例とWebSocket FAQを参照)
- 適切なping/pongハートビートを実装する(再接続例で示されています)
- ネットワークの安定性と企業ファイアウォールの設定を確認する
- サブスクリプションの数を監視する - 多すぎると不安定になる可能性がある
- 接続ライフサイクルを適切に処理していることを確認する
メッセージが欠落する
メッセージが欠落する
症状: 予想されるサブスクリプション更新が受け取れない解決策:
- サブスクリプションが確認されていることを確認する(応答を確認)
- 監視しているアカウント/プログラムに実際の活動があることを確認する
- 接続状態を監視する - 欠落したメッセージは通常切断を示す
高いレイテンシー
高いレイテンシー
症状: メッセージの配信が遅く、更新に遅延がある解決策:
- “finalized”ではなく”confirmed”コミットメントを使用
- アクティブなサブスクリプションの数を減らす
- メッセージ処理ロジックを最適化する
- 複数の接続を使用して負荷を分散することを検討する
- ネットワーク接続品質を確認する
メモリリーク
メモリリーク
症状: アプリケーションのメモリ使用量が時間と共に増加する解決策:
- 適切なサブスクリプションクリーニングを実装する
- コンポーネントがアンマウントされたときにイベントリスナーを削除する
- 定期的にメッセージログをクリアする
- サブスクリプション数を監視し、制限を設ける
- 可能な場合はコールバック関数に弱参照を使用する
標準RPCからの移行
HTTPポーリングを現在使用している場合、WebSocketへの移行方法は以下の通りです:拡張機能
さらに高度な機能を必要とするアプリの場合は、LaserStream gRPCをご検討ください:24時間の履歴再生
アプリがオフライン中に逃したデータをキャッチアップ
マルチノード集約
複数のバリデーターからのデータでより高い信頼性
高スループット
より多くのサブスクリプションと高いメッセージレートを処理する
エンタープライズ機能
高度なモニタリング、分析、データパイプライン