Websocket - 代币价格
用于订阅实时代币价格的 WebSocket API
1. 连接流程
2. 示例代码
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));
// 60 秒后取消订阅
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 响应示例
3. 断线重连
最后更新于