GoFundMeme
  • GoFundMeme - Launch the next viral meme
  • FAQs
  • Getting Started
    • Referral Program
    • Reward System
    • Point System
    • Fees
  • GoFundMeme
    • Launch a Memecoin
      • Bonding Curve
        • Intro
      • Fair Launch
        • Tokenomics
        • Target Target
        • Boosters & Vesting
    • Harvest (LP LOCK)
      • How it works
      • Harvesting LP Fees
      • Claim Rewards
    • GFM Protocol
    • Defi x Memecoins
    • Staking
    • KYC Gating
    • SocialFi
      • Community Bubbles
  • Developers
    • GFM for Builders
    • Installation Guide
    • Init gfmSDK
    • GFM Methods
      • Bonding Curve
        • Pool Interaction
        • Pool Staking Network
      • Fair Launch
        • Pool Interaction
    • APIs
      • Create Pools
    • WebSockets
      • Subscriptions
Powered by GitBook
On this page
  • 📡 Subscriptions API
  • 🔥 Key Features
  • 🚀 Quick Example
  • 1️⃣ Pool State Updates
  • 2️⃣ Market Cap Updates
  • 3️⃣ Bonding Curve Swaps
  • 4️⃣ Fair Launch Funding Events
  • 5️⃣ New & Migrated Pools
  • 🔌 Unsubscribing & Disconnecting
  • 🎯 Final Summary
  1. Developers
  2. WebSockets

Subscriptions

📡 Subscriptions API

The GoFundMeme SDK provides a WebSocket-based subscription system that allows real-time updates for Fair Launches, Bonding Curve swaps, Market Capitalization changes, Pool State updates, and more.

With gfmSDK.api.subscription, developers can efficiently listen to live events without polling.

🔥 Key Features

✔️ Real-Time Pool State Updates – Get notified when a pool’s status changes.

✔️ Live Market Cap Updates – Track the market cap of a token dynamically.

✔️ Bonding Curve Swaps – Receive buy/sell events in real-time.

✔️ Fair Launch Funding Events – Monitor funding and defunding actions.

✔️ New & Migrated Pools – Be alerted when a pool is created or migrated.

✔️ Seamless Disconnection – Easily unsubscribe when needed.

📜 How to Use Subscriptions

To start listening to real-time events, you can use the gfmSDK.api.subscription object and call one of the available listeners.

🚀 Quick Example

import { Connection } from "@solana/web3.js";
import { initGoFundMemeSDK, NETWORK } from "@gofundmeme/sdk";

const connection = new Connection("https://api.mainnet-beta.solana.com");

(async () => {
    const gfmSDK = await initGoFundMemeSDK({ connection });

    // Listen for funding events on Fair Launch pools in Mainnet
    const listener = gfmSDK.api.subscription.fairLaunch.funding.all(NETWORK.MAINNET);

    listener.subscription.subscribe((event) => {
        console.log("📡 Fair Launch Funding Event:", event);
    });
})();

🛠️ Explanation:

1️⃣ Initialize the SDK with a Solana RPC connection.

2️⃣ Subscribe to a WebSocket event (gfmSDK.api.subscription.fairLaunch.funding.all).

3️⃣ Log incoming events in real time.

📡 Available Subscription Methods


1️⃣ Pool State Updates

Listens for pool state changes, such as raising, launching, or launched.

Subscribe by Network

const listener = gfmSDK.api.subscription.poolState.all(NETWORK.MAINNET);
listener.subscription.subscribe((event) => console.log("📡 Pool State Update:", event));

Subscribe by Mint Address

const listener = gfmSDK.api.subscription.poolState.byMintAddress("YOUR_MINT_ADDRESS");
listener.subscription.subscribe((event) => console.log("📡 Pool State Update:", event));

📌 Event Type:

type PoolStateEvent = {
    status: PoolStatus;
    totalRaised: number;
    raisePercent: number;
    token: TokenInfo;
    pool: PoolInfo;
    raiseType: RaiseType;
    dexType: DexType;
    network: NETWORK;
}

2️⃣ Market Cap Updates

Tracks market capitalization changes in real-time.

Subscribe by Network

const listener = gfmSDK.api.subscription.marketcap.all(NETWORK.MAINNET);
listener.subscription.subscribe((event) => console.log("📡 Market Cap Update:", event));

Subscribe by Mint Address

const listener = gfmSDK.api.subscription.marketcap.byMintAddress("YOUR_MINT_ADDRESS");
listener.subscription.subscribe((event) => console.log("📡 Market Cap Update:", event));

📌 Event Type:

type MarketcapUpdateEvent = {
    network: NETWORK;
    mintAddress: string;
    mcSOL: number;
}

3️⃣ Bonding Curve Swaps

Listens for buy and sell transactions on Bonding Curve pools.

Subscribe by Network

const listener = gfmSDK.api.subscription.bondingCurve.swaps.all(NETWORK.MAINNET);
listener.subscription.subscribe((event) => console.log("📡 Swap Event:", event));

Subscribe by Mint Address

const listener = gfmSDK.api.subscription.bondingCurve.swaps.byMintAddress("YOUR_MINT_ADDRESS");
listener.subscription.subscribe((event) => console.log("📡 Swap Event:", event));

📌 Event Type:

type SwapEvent = {
    direction: 'buy' | 'sell';
    solAmountChange: number;
    tokenAmountChange: number;
    price: number;
    pooledSOL: number;
    targetSOL: number;
    poolAddress: string;
    funderAddress: string;
    mintAddress: string;
    txid: string;
}

4️⃣ Fair Launch Funding Events

Tracks contributions (funding) and withdrawals (defunding) from Fair Launch pools.

Subscribe by Network

const listener = gfmSDK.api.subscription.fairLaunch.funding.all(NETWORK.MAINNET);
listener.subscription.subscribe((event) => console.log("📡 Funding Event:", event));

Subscribe by Mint Address

const listener = gfmSDK.api.subscription.fairLaunch.funding.byMintAddress("YOUR_MINT_ADDRESS");
listener.subscription.subscribe((event) => console.log("📡 Funding Event:", event));

📌 Event Type:

type FundingEvent = {
    direction: 'fund' | 'defund';
    solAmountChange: number;
    pooledSOL: number;
    targetSOL: number;
    poolAddress: string;
    funderAddress: string;
    mintAddress: string;
    txid: string;
}

5️⃣ New & Migrated Pools

These subscriptions notify you when a pool is created or migrated.

New Pools (All Networks)

const listener = gfmSDK.api.subscription.pool.newPools(NETWORK.MAINNET);
listener.subscription.subscribe((event) => console.log("📡 New Pool Created:", event));

Migrated Pools (All Networks)

const listener = gfmSDK.api.subscription.pool.migratedPools(NETWORK.MAINNET);
listener.subscription.subscribe((event) => console.log("📡 Pool Migrated:", event));

📌 Event Type:

type PoolStateEvent = {
    status: PoolStatus;
    totalRaised: number;
    raisePercent: number;
    token: TokenInfo;
    pool: PoolInfo;
    raiseType: RaiseType;
    dexType: DexType;
    network: NETWORK;
}

🔌 Unsubscribing & Disconnecting

You can unsubscribe from a specific subscription or disconnect from all WebSocket events.

Unsubscribe from a Specific Event

const listener = gfmSDK.api.subscription.fairLaunch.funding.all(NETWORK.MAINNET);
listener.subscription.subscribe((event) => console.log("📡 Funding Event:", event));

// After 30 seconds, unsubscribe
setTimeout(() => {
    console.log("🔌 Disconnecting from funding events...");
    listener.disconnect();
}, 30000);

Disconnect from All Subscriptions

gfmSDK.api.subscription.disconnectAll();
console.log("🚫 All WebSocket connections closed.");

🎯 Final Summary

Subscription Type

Method

Pool State Updates

poolState.all(network), poolState.byMintAddress(mintAddress)

Market Cap Updates

marketcap.all(network), marketcap.byMintAddress(mintAddress)

Bonding Curve Swaps

bondingCurve.swaps.all(network), bondingCurve.swaps.byMintAddress(mintAddress)

Fair Launch Funding

fairLaunch.funding.all(network), fairLaunch.funding.byMintAddress(mintAddress)

New Pools

pool.newPools(network)

Migrated Pools

pool.migratedPools(network)

Unsubscribe

listener.disconnect()

Disconnect All

gfmSDK.api.subscription.disconnectAll()

🚀 Instant Updates – No need for manual polling!

⚡ Efficient WebSockets – Optimized real-time data streams.

🔗 Simple API – Easy to integrate, minimal effort required.

PreviousWebSockets

Last updated 2 months ago