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-keyheader;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
3. Disconnection
In the event of a disconnection, the client must automatically reconnect and resubscribe to continue receiving uninterrupted real-time updates.
Last updated