@solana/rpc-subscriptions-spec
This package contains types that describe the implementation of the JSON RPC Subscriptions API, as well as methods to create one. It can be used standalone, but it is also exported as part of the Solana JavaScript SDK @solana/web3.js@rc
.
This API is designed to be used as follows:
const rpcSubscriptions =
createSolanaRpcSubscriptions(mainnet('wss://api.mainnet-beta.solana.com'));
const response = await rpcSubscriptions
.slotNotifications({ commitment: 'confirmed' })
.subscribe({ abortSignal: AbortSignal.timeout(10_000) });
try {
for await (const slotNotification of slotNotifications) {
console.log('Got a slot notification', slotNotification);
}
} catch (e) {
console.error('The subscription closed unexpectedly', e);
} finally {
console.log('We have stopped listening for notifications');
}
Types
RpcSubscriptionsChannel<TOutboundMessage, TInboundMessage>
A channel is a DataPublisher
that you can subscribe to events of type RpcSubscriptionChannelEvents<TInboundMessage>
. Additionally, you can use it to send messages of type TOutboundMessage
back to the remote end by calling the send(message)
method.
RpcSubscriptionsChannelCreator<TOutboundMessage, TInboundMessage>
A channel creator is a function that accepts an AbortSignal
, returns a new RpcSubscriptionsChannel
, and tears down the channel when the abort signal fires.
RpcSubscriptionChannelEvents<TInboundMessage>
Subscription channels publish events on two channel names:
error
: Fires when the channel closes unexpectedlymessage
: Fires on every message received from the remote end
Functions
executeRpcPubSubSubscriptionPlan({ channel, responseTransformer, signal, subscribeMethodName, subscribeParams, unsubscribeMethodName })
Given a channel, this function executes the particular subscription plan required by the Solana JSON RPC Subscriptions API.
- Calls the
subscribeMethodName
on the remote RPC - Waits for a response containing the subscription id
- Returns a
DataPublisher
that publishes notifications related to that subscriptions id, filtering out all others - Calls the
unsubscribeMethodName
on the remote RPC when the abort signal is fired.