Skip to main content

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 メソッドは、すべてのプランで利用できます。

基本概念

サブスクリプションの種類

ウォレット残高、トークンアカウント、プログラムデータなど、特定のアカウントの変更を監視します。ユースケース:
  • ウォレット残高の追跡
  • トークンアカウントの監視
  • スマートコントラクトの状態変更
  • NFT 所有権の更新
特定のプログラムが所有するすべてのアカウントの変更を監視します。ユースケース:
  • DEX 取引の監視
  • DeFi プロトコルの追跡
  • NFT マーケットプレイスのアクティビティ
  • ゲームアセットの変更
特定のトランザクションが確認されたとき、または特定のアカウントを参照するトランザクションが発生したときに通知を受け取ります。ユースケース:
  • 支払いの確認
  • トランザクションステータスの追跡
  • マルチシグ承認
  • コントラクト実行の監視
スロットレベルでブロックチェーンの進行状況とファイナリティを監視します。ユースケース:
  • ブロックエクスプローラーアプリケーション
  • ネットワークの健全性監視
  • コンセンサスの追跡
  • パフォーマンス分析

コミットメントレベル

信頼性の高いアプリケーションを構築するには、コミットメントレベルを理解することが重要です。
最速 - トランザクションはバリデーターによって処理されていますが、確認されていません
  • レイテンシ:~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 接続は、ネットワークの問題、サーバーメンテナンス、一時的な障害など、さまざまな理由で切断されることがあります。本番アプリケーションでは、信頼性を確保するために再接続ロジックを必ず実装してください。

切断が発生する理由

  • インターネット接続の問題
  • モバイルデバイスでの Wi-Fi ハンドオフ
  • 企業ファイアウォールのタイムアウト
  • ISP ルーティングの変更
  • 計画メンテナンス時間
  • ロードバランサーの再起動
  • RPC ノードの更新
  • 一時的な過負荷保護
  • ブラウザータブのバックグラウンド化
  • モバイルアプリの一時停止
  • コンピューターのスリープ/休止状態
  • プロセスのクラッシュまたは再起動

切断の検出

再接続戦略

再接続ロジックのテスト

本番環境では必須です:本番アプリケーションでは、適切な再接続ロジックの実装は必須です。WebSocket 接続は切断される可能性があります。切断に備え、テストを行い、本番環境で監視してください。

トラブルシューティング

症状:WebSocket が最初から接続できません解決策:
  • API キーが正しく、十分なクレジットがあることを確認します
  • エンドポイントの URL 形式を確認します:wss://mainnet.helius-rpc.com?api-key=YOUR_KEY
  • ファイアウォールがポート 443 での WebSocket 接続を許可していることを確認します
  • まず単純な ping でテストし、基本的な接続を確認します
症状:数分おきに接続が切断されます解決策:
  • WebSocket には 10 分間の非アクティブタイマーがあります。接続を維持するために、少なくとも 1 分に 1 回 ping を送信してください(上記の再接続例と WebSocket FAQ を参照してください)
  • 適切な ping/pong ハートビートを実装します(上記の再接続例を参照してください)
  • ネットワークの安定性と企業ファイアウォールの設定を確認します
  • サブスクリプション数を監視します。多すぎると不安定になる可能性があります
  • 接続ライフサイクルが適切に処理されていることを確認します
症状:想定されるサブスクリプション更新を受信できません解決策:
  • サブスクリプションが確認済みであることを確認します(レスポンスを確認してください)
  • 監視しているアカウント/プログラムで実際にアクティビティが発生していることを確認します
  • 接続状態を監視します。メッセージの欠落は、多くの場合、切断を示しています
症状:メッセージ配信が遅く、更新に遅延があります解決策:
  • コミットメントに「finalized」ではなく「confirmed」を使用します
  • アクティブなサブスクリプション数を減らします
  • メッセージ処理ロジックを最適化します
  • 複数の接続を使用して負荷を分散することを検討します
  • ネットワーク接続の品質を確認します
症状:アプリケーションのメモリ使用量が時間の経過とともに増加します解決策:
  • 適切なサブスクリプションのクリーンアップを実装します
  • コンポーネントのアンマウント時にイベントリスナーを削除します
  • メッセージログを定期的に消去します
  • サブスクリプション数を監視し、上限を適用します
  • 可能な場合は、コールバック関数に弱参照を使用します

標準 RPC からの移行

現在 HTTP ポーリングを使用している場合は、次のように WebSocket に移行できます。

拡張機能

さらに高度な機能が必要なアプリでは、LaserStream gRPC の使用を検討してください。

24-Hour Historical Replay

アプリがオフラインだった間に受信できなかったデータを取得します

Multi-Node Aggregation

複数のバリデーターからデータを取得し、信頼性を向上させます

Higher Throughput

より多くのサブスクリプションと、より高いメッセージレートを処理します

Enterprise Features

高度な監視、分析、データパイプラインを利用できます

はじめる

準備はできましたか? 実用的な例と段階的な実装手順については、WebSocket クイックスタートガイドをご覧ください。

ガイド

実行可能なコードを含むステップバイステップのチュートリアルは、LaserStream WebSocket ガイドページでご覧いただけます。