Overview
The WebSocket API provides real-time subscriptions to account changes, signatures, slots, and other blockchain events. WebSocket connections are persistent and push updates to clients as events occur. Default Port: 8900 Endpoint:ws://localhost:8900 or wss:// for secure connections
Connection
JavaScript Example
Rust Example
Subscription Methods
accountSubscribe
Subscribe to account changes. Parameters:Account public key as base-58 encoded string
Configuration objectFields:
encoding(string): base58, base64, base64+zstd, jsonParsedcommitment(string): Commitment level
programSubscribe
Subscribe to all accounts owned by a program. Parameters:Program public key as base-58 encoded string
Configuration objectFields:
encoding(string): Account data encodingcommitment(string): Commitment levelfilters(array): Optional filters (same as getProgramAccounts)
signatureSubscribe
Subscribe to transaction signature confirmation. Parameters:Transaction signature as base-58 encoded string
Configuration objectFields:
commitment(string): Commitment levelenableReceivedNotification(bool): Send notification when received
The subscription automatically closes after sending a notification.
slotSubscribe
Subscribe to slot notifications. Parameters: None Subscribe Request:slotsUpdatesSubscribe
Subscribe to all slot update events. Parameters: None Subscribe Request:firstShredReceived: First shred received for slotcompleted: All shreds receivedoptimisticConfirmation: Slot optimistically confirmedroot: Slot finalized as rootcreatedBank: Bank created for slotfrozen: Slot frozendead: Slot marked dead
logsSubscribe
Subscribe to transaction logs. Parameters:Filter for logsOptions:
"all": All transactions"allWithVotes": All transactions including votes{"mentions": ["pubkey"]}: Transactions mentioning address
Configuration with
commitment fieldblockSubscribe
Subscribe to block notifications. Parameters:Filter type:
"all" or specific block filterConfiguration objectFields:
encoding(string): Transaction encodingcommitment(string): Commitment leveltransactionDetails(string): full, signatures, noneshowRewards(bool): Include rewardsmaxSupportedTransactionVersion(number): Max version
voteSubscribe
Subscribe to vote transactions. Parameters: None Notification Format:rootSubscribe
Subscribe to root (finalized slot) notifications. Parameters: None Subscribe Request:Best Practices
Connection Management
- Implement reconnection logic: WebSocket connections can drop
- Handle ping/pong: Keep connections alive
- Limit subscriptions: Max 10 subscriptions per connection
- Close unused subscriptions: Call unsubscribe methods
Error Handling
Performance
- Use filters on
programSubscribeto reduce notification volume - Batch account queries instead of individual subscriptions when possible
- Consider commitment level tradeoffs (processed vs confirmed)
Rate Limits
- Max subscriptions per connection: 10
- Notification rate: No hard limit, depends on blockchain activity
- Connection limit: Varies by node configuration
See Also
- RPC Methods - HTTP JSON-RPC methods
- RPC Overview - General RPC configuration
- Validator Configuration - RPC server setup