Solana CookbookDevelopment

Subscribing to Events

Websockets provide an interface where you can listen for certain events. Instead of pinging a HTTP endpoint at an interval to get frequent updates, you can instead receive those updates only when they happen.

import {
createSolanaClient,
generateKeyPairSigner,
lamports
} from "gill";
const LAMPORTS_PER_SOL = lamports(1_000_000_000n);
const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: "localnet"
});
const wallet = await generateKeyPairSigner();
const abortController = new AbortController();
const notifications = await rpcSubscriptions
.accountNotifications(wallet.address, { commitment: "confirmed" })
.subscribe({ abortSignal: abortController.signal });
(async () => {
for await (const notification of notifications) {
console.log(notification);
}
})();
const airdropSignature = await rpc
.requestAirdrop(wallet.address, LAMPORTS_PER_SOL)
.send();
while (true) {
const status = await rpc.getSignatureStatuses([airdropSignature]).send();
if (status.value?.[0]?.confirmationStatus === "confirmed") break;
await new Promise((r) => setTimeout(r, 1000));
}
abortController.abort();

Is this page helpful?