Websocket - Token price
Websocket API for token prices
The WebSocket Token Price API provides real-time updates for token prices by token. Clients can subscribe to specific tokens and receive live price updates.
1. Connection Workflow
Establish Websocket connection to the wss://ws.price.astralane.io/price-by-token
Specify your API key in
x-api-key
header;Send subscription request for desired list of tokens;
Listen for events corresponding to the subscribed room type to receive real-time price updates.
2. Sample code
const WebSocket = require('ws');
const tokens = [
"So11111111111111111111111111111111111111112",
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
];
const socket = new WebSocket('wss://ws.price.astralane.io/price-by-token', {
headers: {
'x-api-key': 'YOUR-API-KEY'
}
});
let messageCount = 0;
let unsubscribeTimeout;
const subscribeEvent = {
event: "subscribe",
tokens: tokens,
};
const unsubscribeEvent = {
event: "unsubscribe",
tokens: tokens,
};
socket.on('open', function() {
console.log('Connected to server');
console.log('Subscribing to tokens:', tokens);
socket.send(JSON.stringify(subscribeEvent));
// Set timeout to unsubscribe after 60 seconds
unsubscribeTimeout = setTimeout(() => {
console.log('Unsubscribing after 60 seconds...');
socket.send(JSON.stringify(unsubscribeEvent));
socket.close();
}, 60000);
});
socket.on('message', function(data) {
messageCount++;
console.log(`Received message #${messageCount}`);
try {
const parsedData = JSON.parse(data.toString());
console.log('Parsed data:', parsedData);
} catch (e) {
console.log('Raw data (not JSON):', data.toString());
}
});
socket.on('error', function(error) {
console.error('WebSocket error:', error);
clearTimeout(unsubscribeTimeout);
});
socket.on('close', function(code, reason) {
console.log(`Connection closed: [${code}] ${reason}`);
console.log(`Total messages received: ${messageCount}`);
clearTimeout(unsubscribeTimeout);
});
2.1 Response example
{
"timestamp": "1741771359",
"decimals": 9,
"name": "Wrapped SOL",
"symbol": "SOL",
"uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png",
"supply": 509384498.1158462,
"price_in_sol": 1,
"price_in_usd": 124.3285941413753,
"token": "So11111111111111111111111111111111111111112"
}
3. Disconnection
In the event of a disconnection, the client must automatically reconnect and resubscribe to continue receiving uninterrupted real-time updates.
Last updated