subscribe:实时价格
一个池子的实时价格/市值更新。每当该池子的最新成交价变化,服务端推送 token_update。传 mint 或 pool 之一(mint 到 pool 的查找在服务端完成)。
| 通道 | Socket.IO 事件 |
| 认证 | 无,不需要 API 密钥 |
| 推送 | token_update |
| 费用 | 免费 |
支持的 DEX
价格来自 Solana 上每个主要 DEX 和发射台的成交:
PumpFun
PumpFun Mayhem
PumpSwap
Meteora
Raydium
Orca
Bonk
StonkFun
Meteora 覆盖 DAMM v2 和 DBC(动态联合曲线);Raydium 覆盖 CPMM 和 AMM v4。每条更新里的 quote 字段告诉你价格以哪个 mint(WSOL 或 USDC)计价。
示例
- JavaScript
- Python
import { io } from "socket.io-client";
const socket = io("https://sol.shrine.trade"); // 无需密钥
socket.on("token_update", (u) => {
console.log(`${u.pool} → ${u.price} (mcap ${u.mcap})`);
});
socket.emit("subscribe", { mint: "Gc6rNxGnoQt…pump" }, (ack) => {
console.log("subscribed:", ack); // { ok: true, pool: "...", room: "..." }
});
// 之后要停止(免费):socket.emit("unsubscribe", { pool: "4mBL…" });
import socketio
sio = socketio.Client()
@sio.on("token_update")
def on_update(u):
print(u["pool"], "→", u["price"], "(mcap", u["mcap"], ")")
sio.connect("https://sol.shrine.trade") # 无需密钥
sio.emit("subscribe", {"mint": "Gc6rNxGnoQt…pump"},
callback=lambda ack: print("subscribed:", ack))
sio.wait()
# 之后要停止(免费):sio.emit("unsubscribe", {"pool": "4mBL…"})
响应:token_update
{
"pool": "4mBLRPUyfE7CvxmXiGJx5WA51isanbxpdbdPjFuuBzmY",
"price": 0.000000033,
"mcap": 32.62,
"quote": "So11111111111111111111111111111111111111112",
"priceUSD": 0.0000049,
"mcapUSD": 4893.0,
"time": 1779812627
}
| 字段 | 含义 |
|---|---|
price | 每个基础代币的价格,以计价代币计 |
quote | 价格所用的计价 mint:WSOL、USDC 或 USD1 |
mcap | 以计价代币计的市值(价格 × 总供应量) |
priceUSD | 换算成美元的 price |
mcapUSD | 换算成美元的 mcap |
USDC 和 USD1 计价的池子,美元字段等于 price / mcap(它们本来就是美元)。WSOL 计价的池子用实时 SOL/USD 汇率换算(与 subscribe_sol_price 推送的汇率相同)。在首个 SOL/USD 报价到来前的短暂窗口内,priceUSD / mcapUSD 为 0。
错误
订阅无法创建时,ack 回调收到的是错误对象而不是 { ok: true }:
{ "error": "not_found", "message": "pool not found" }
error | 何时 |
|---|---|
invalid_request | mint 和 pool 都没传。 |
not_found | 该 mint 没有活跃池子,或给定的 pool 数据层不认识。 |
unavailable | 后端暂时性错误(服务端已重试)。可安全重试,不是最终的"未找到"。 |
limit_exceeded | 这条连接的订阅数已达上限。 |
不传 ack 回调时,同样的内容以 subscription_error 事件推送。
试一试
说明
- 和每个实时流一样免费、无需密钥,适合"当前价格"卡片或简单行情。
- 想要完整成交明细(钱包、签名、数量)用
subscribe_trades。 - 想要 K 线用
subscribe_ohlcv。