简体中文
WebSocket API 实时数据订阅服务
wss://realtime-dex.chainstream.io/connection/websocket
const ws = new WebSocket("wss://realtime-dex.chainstream.io/connection/websocket"); ws.onopen = () => { // 发送认证消息 ws.send(JSON.stringify({ type: "auth", token: "YOUR_ACCESS_TOKEN" })); };
// 订阅K线数据示例 ws.send(JSON.stringify({ type: "subscribe", channel: "dex-candle:sol_6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN_1m" }));
ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log('收到数据:', data); };
dex-candle:{chain}_{tokenAddress}_{resolution}
{ "o": number, // 开盘价 "c": number, // 收盘价 "h": number, // 最高价 "l": number, // 最低价 "v": number, // 交易量 "r": string, // 周期 "t": number // 时间戳 }
dex-token-stats:{chain}_{tokenAddress}
{ "a": string, // 代币地址 "t": number, // 时间戳 "b1m": number, // 1分钟内买入次数 "s1m": number, // 1分钟内卖出次数 "be1m": number, // 1分钟内买入人数 "se1m": number, // 1分钟内卖出人数 "bviu1m": number, // 1分钟内买入美元金额 "sviu1m": number, // 1分钟内卖出美元金额 "p1m": number, // 1分钟价格 "b5m": number, // 5分钟内买入次数 "s5m": number, // 5分钟内卖出次数 "be5m": number, // 5分钟内买入人数 "se5m": number, // 5分钟内卖出人数 "bviu5m": number, // 5分钟内买入美元金额 "sviu5m": number, // 5分钟内卖出美元金额 "p5m": number, // 5分钟价格 "b15m": number, // 15分钟内买入次数 "s15m": number, // 15分钟内卖出次数 "be15m": number, // 15分钟内买入人数 "se15m": number, // 15分钟内卖出人数 "bviu15m": number,// 15分钟内买入美元金额 "sviu15m": number,// 15分钟内卖出美元金额 "p15m": number, // 15分钟价格 "b30m": number, // 30分钟内买入次数 "s30m": number, // 30分钟内卖出次数 "be30m": number, // 30分钟内买入人数 "se30m": number, // 30分钟内卖出人数 "bviu30m": number,// 30分钟内买入美元金额 "sviu30m": number,// 30分钟内卖出美元金额 "p30m": number, // 30分钟价格 "b1h": number, // 1小时内买入次数 "s1h": number, // 1小时内卖出次数 "be1h": number, // 1小时内买入人数 "se1h": number, // 1小时内卖出人数 "bviu1h": number, // 1小时内买入美元金额 "sviu1h": number, // 1小时内卖出美元金额 "p1h": number, // 1小时价格 "b4h": number, // 4小时内买入次数 "s4h": number, // 4小时内卖出次数 "be4h": number, // 4小时内买入人数 "se4h": number, // 4小时内卖出人数 "bviu4h": number, // 4小时内买入美元金额 "sviu4h": number, // 4小时内卖出美元金额 "p4h": number, // 4小时价格 "b24h": number, // 24小时内买入次数 "s24h": number, // 24小时内卖出次数 "be24h": number, // 24小时内买入人数 "se24h": number, // 24小时内卖出人数 "bviu24h": number,// 24小时内买入美元金额 "sviu24h": number,// 24小时内卖出美元金额 "p24h": number, // 24小时价格 "p": number // 当前价格 }
dex-ranking-trending-tokens-stats:{chain}
dex-ranking-new-tokens-stats:{chain}
dex-new-tokens-metadata:{chain}
{ "a": string, // 代币地址 "n": string, // 名称 "s": string, // 符号 "iu": string, // 图片URL "de": string, // 描述 "sm": { // 社交媒体 "tw": string, // Twitter "tg": string, // Telegram "w": string, // 网站 "tt": string, // TikTok "dc": string, // Discord "fb": string, // Facebook "gh": string, // GitHub "ig": string, // Instagram "li": string, // LinkedIn "md": string, // Medium "rd": string, // Reddit "yt": string, // YouTube "bb": string // BitBucket }, "cts": number // 创建时间戳(毫秒) }
dex-new-tokens:{chain}
{ "a": string, // 代币地址 "n": string, // 名称 "s": string, // 符号 "de": string, // 描述 "cts": number // 创建时间戳(毫秒) }
dex-token-general-stat-num:{chain}_{tokenAddress}
{ "a": string, // 代币地址 "v": number, // 持有者数量 "ts": number // 时间戳 }
dex-token-supply:{chain}_{tokenAddress}
{ "a": string, // 代币地址 "s": number, // 供应量 "mc": number, // 市值(美元) "ts": number // 时间戳 }
{ "a": string, // 代币地址 "t": string, // 指标类型 "v": number, // 数值 "ts": number // 时间戳 }
dex-trades:{chain}_{tokenAddress}
{ "bwa": string, // maker地址 "ba": number, // 基础代币数量 "sa": number, // 报价代币数量 "swa": string, // 报价代币地址 "bais": number, // 美元金额 "t": number, // 时间戳 "k": string, // 事件类型 "h": string, // 交易哈希 "a": string // 代币地址 }
dex-wallet-trade:{chain}_{walletAddress}
dex-wallet-balance:{chain}_{walletAddress}
{ "a": string, // 钱包地址 "ta": string, // 代币地址 "tpiu": number, // 代币美元价格 "t": number, // 时间戳 }
dex-wallet-pnl-list:{chain}_{walletAddress}
{ "a": string, // 钱包地址 "bs": number, // 买入次数 "ba": number, // 买入数量 "baiu": number, // 买入美元金额 "abpiu": number, // 平均买入美元价格 "sa": number, // 卖出数量 "saiu": number, // 卖出美元金额 "ss": number, // 卖出次数 "ws": number, // 盈利次数 "wr": number, // 胜率 "piu": number, // 美元盈亏 "apiu": number, // 平均美元盈亏 "pr": number, // 盈亏比率 "pd": number, // 盈利天数 "ld": number, // 亏损天数 "ts": number, // 交易代币数 "r": string // 统计周期 }
dex-pool-balance:{chain}_{poolAddress}
{ "a": string, // 资金池地址 "taa": string, // 代币A地址 "taliu": number, // 代币A流动性(美元) "tba": string, // 代币B地址 "tbliu": number // 代币B流动性(美元) }
const streamApi = new StreamApi(context); // 订阅K线数据 streamApi.subscribeTokenCandles({ chain: "sol", tokenAddress: "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", resolution: "1m", callback: (data) => { console.log("K线数据:", data); } }); // 订阅钱包余额 streamApi.subscribeWalletBalance({ chain: "sol", walletAddress: "YOUR_WALLET_ADDRESS", callback: (data) => { console.log("钱包余额:", data); } });
function reconnect(attempt) { const delay = Math.min(1000 * Math.pow(2, attempt), 10000); setTimeout(() => { connect(); }, delay); }
class DexWebSocket { private ws: WebSocket; private reconnectAttempts = 0; private maxReconnectAttempts = 5; private messageHandlers = new Map<string, Set<(data: any) => void>>(); constructor( private url: string, private accessToken: string ) { this.connect(); } private connect() { this.ws = new WebSocket(this.url); this.ws.onopen = () => { // 发送认证 this.authenticate(); // 重新订阅 this.resubscribe(); }; this.ws.onmessage = (event) => { this.handleMessage(JSON.parse(event.data)); }; this.ws.onclose = () => { this.reconnect(); }; } private authenticate() { this.send({ type: "auth", token: this.accessToken }); } public subscribe(channel: string, handler: (data: any) => void) { // 订阅实现 } public unsubscribe(channel: string) { // 取消订阅实现 } }
此页面对您有帮助吗?