subscribe_trades —— 实时交易
该池上执行的每一笔交易,带完整细节(钱包、签名、金额、价格)。服务器发出 trade。传 mint 或 pool 二者之一。
| 通道 | Socket.IO 事件 |
| 认证 | 不需要;你套餐的密钥可提高限额 |
| 发出 | trade |
| 费用 | 免费 |
示例
- JavaScript
- Python
import { io } from "socket.io-client";
const socket = io("https://sol.shrine.trade"); // 无需密钥
socket.on("trade", (t) => {
const side = t.is_buy ? "BUY " : "SELL";
console.log(`${side} ${t.token_amount.toFixed(2)} @ ${t.price} by ${t.wallet.slice(0, 4)}…`);
});
socket.emit("subscribe_trades", { pool: "4mBL…" });
// 之后要停止(免费):socket.emit("unsubscribe_trades", { pool: "4mBL…" });
import socketio
sio = socketio.Client()
@sio.on("trade")
def on_trade(t):
side = "BUY " if t["is_buy"] else "SELL"
print(f"{side} {t['token_amount']:.2f} @ {t['price']} by {t['wallet'][:4]}…")
sio.connect("https://sol.shrine.trade") # 无需密钥
sio.emit("subscribe_trades", {"pool": "4mBL…"})
sio.wait()
# 之后要停止(免费):sio.emit("unsubscribe_trades", {"pool": "4mBL…"})
响应 —— trade
{
"protocol": "PUMPSWAP",
"pool": "4mBLRPUyfE7CvxmXiGJx5WA51isanbxpdbdPjFuuBzmY",
"mint": "Gc6rNxGnoQt6vCfhNzn5iJnPBu1V38GZfdYERfnXpump",
"signature": "c9asMSPXxiEYC4RQpLBFUAASCL63TXZpPgSPgivDcJxsNoNc7ptrh6DfJy67NS2p7nEQBbVR45ZuPhyBqectR76",
"is_buy": true,
"token_amount": 153285714.285714,
"quote_amount": 5.0,
"price": 0.000000033,
"marketcap": 32.618826,
"wallet": "9AiXyDfy6cKieVPgwyfsNS37HypoS8k7ju2CV3WnyvZG",
"timestamp": 1779812627
}
is_buy——交易者收到基础代币(价格上涨)为true;卖出则为false。token_amount/quote_amount——人类可读单位(已按精度调整)。timestamp——该交易所在 slot 的链上时间(秒):即getBlockTime对该 slot 返回的值,所有发射平台都一样。
错误
如果订阅无法创建,ack 回调收到的是一个错误对象而不是 { ok: true }:
{ "error": "not_found", "message": "pool not found" }
error | 何时 |
|---|---|
invalid_request | mint 和 pool 都没有提供。 |
not_found | 该 mint 没有活跃池,或给定的 pool 对数据平面来说是未知的。 |
unavailable | 瞬时后端错误(服务器已经重试过)。可以安全重试——它不是确定的"未找到"。 |
如果你不传 ack 回调,同样的负载会改以 subscription_error 事件发出。
试一试
说明
- 免费且无需密钥——
trade消息从不计费。 - 我们只为至少有一个在线订阅者的池发布交易,这样洪流保持低成本。
- 池内的交易顺序得到保留。
- 只想要价格/市值?用更轻量的
subscribe。
LimitsFree 2 socketsLite 5 socketsDeveloper 50 socketsSee plans →