Overview

This guide will help you get started with Helius data streaming using standard WebSockets. It includes basic examples for the most common use cases.

Prerequisites

  • A Helius API key (sign up on the Helius dashboard if you don’t have one)
  • Basic knowledge of JavaScript and WebSockets

Setting Up a WebSocket Connection

First, let’s set up a basic WebSocket connection to Helius:

// Initialize WebSocket connection
const ws = new WebSocket('wss://mainnet.helius-rpc.com?api-key=YOUR_API_KEY');

// Handle connection opened
ws.onopen = () => {
  console.log('WebSocket connection established');
  // You can send subscription requests once the connection is established
};

// Handle received messages
ws.onmessage = (event) => {
  const response = JSON.parse(event.data);
  console.log('Received data:', response);
};

// Handle errors
ws.onerror = (error) => {
  console.error('WebSocket error:', error);
};

// Handle connection close
ws.onclose = () => {
  console.log('WebSocket connection closed');
};

Replace YOUR_API_KEY with your actual Helius API key.

Subscribing to Account Updates

To receive updates whenever an account changes:

// Subscribe to account updates
const subscribeToAccount = (accountPublicKey) => {
  const subscriptionRequest = {
    jsonrpc: '2.0',
    id: 1,
    method: 'accountSubscribe',
    params: [
      accountPublicKey,
      {
        encoding: 'jsonParsed',
        commitment: 'confirmed'
      }
    ]
  };
  
  ws.send(JSON.stringify(subscriptionRequest));
};

// Example: Subscribe to a token account
subscribeToAccount('9PejEmViKHgUkVFWN57cNEZnFS4Qo6SzsLj5UPAXfDTF');

Subscribing to Program Updates

To receive notifications when any account owned by a program changes:

// Subscribe to program updates
const subscribeToProgram = (programId) => {
  const subscriptionRequest = {
    jsonrpc: '2.0',
    id: 1,
    method: 'programSubscribe',
    params: [
      programId,
      {
        encoding: 'jsonParsed',
        commitment: 'confirmed'
      }
    ]
  };
  
  ws.send(JSON.stringify(subscriptionRequest));
};

// Example: Subscribe to the Token Program
subscribeToProgram('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');

Subscribing to Transaction Signatures

To track the status of a specific transaction:

// Subscribe to signature updates
const subscribeToSignature = (signature) => {
  const subscriptionRequest = {
    jsonrpc: '2.0',
    id: 1,
    method: 'signatureSubscribe',
    params: [
      signature,
      {
        commitment: 'confirmed'
      }
    ]
  };
  
  ws.send(JSON.stringify(subscriptionRequest));
};

// Example: Subscribe to a transaction signature
subscribeToSignature('5UfDuA1mQcZeb7BZyWU5T6CvZsYqsRwBUHFyMeTzwcnn8S6W9vzVDjp3NgjV7qHJQvw5qQbbGvGxoULZKHGUdSmo');

Subscribing to Log Messages

To receive log messages that match specific filters:

// Subscribe to log messages
const subscribeToLogs = (filter) => {
  const subscriptionRequest = {
    jsonrpc: '2.0',
    id: 1,
    method: 'logsSubscribe',
    params: [
      filter,
      {
        commitment: 'confirmed'
      }
    ]
  };
  
  ws.send(JSON.stringify(subscriptionRequest));
};

// Example 1: Subscribe to all logs
subscribeToLogs('all');

// Example 2: Subscribe to logs from a specific program
subscribeToLogs({
  mentions: ['11111111111111111111111111111111']  // System Program
});

Unsubscribing

To stop receiving updates for a subscription:

// Unsubscribe from a subscription
const unsubscribe = (subscriptionId) => {
  const unsubscribeRequest = {
    jsonrpc: '2.0',
    id: 1,
    method: 'unsubscribe',
    params: [subscriptionId]
  };
  
  ws.send(JSON.stringify(unsubscribeRequest));
};

// Example: Unsubscribe using the ID returned from a subscription response
unsubscribe(12345);  // Replace with your actual subscription ID

Next Steps

This quickstart covers the basics of using Helius data streaming with standard WebSockets. For more advanced streaming capabilities, consider:

  • LaserStream - Our premium streaming solution with historical replay and multiple protocol options
  • Enhanced WebSockets - Faster WebSockets with additional subscription methods
  • gRPC Streaming - High-performance binary protocol for backend applications

For a complete reference of all WebSocket methods, see the WebSocket documentation.