subscribe —— 实时价格
一个池的实时价格 / 市值更新。每当该池的最新成交价变化,服务器就发出 token_update。传 mint 或 pool 二者之一(mint → pool 的查询在服务端完成)。
| 通道 | Socket.IO 事件 |
| 认证 | 不需要;你套餐的密钥可提高限额 |
| 发出 | 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 计价的池,USD 字段等于 price / mcap(这些计价本身就是美元)。对 WSOL 计价的池,它们用实时 SOL/USD 汇率换算(与 subscribe_sol_price 推送的是同一汇率)。在看到第一个 SOL/USD tick 之前的短暂窗口内,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。
LimitsFree 2 socketsLite 5 socketsDeveloper 50 socketsSee plans →