WebSocket-Abonnements
Abonniere Rome-EVM-Ereignisse über WebSocket — eth_subscribe mit newHeads und logs, sofort einsatzbereit mit ethers; mit viem verwende Polling.
Rome-EVM-Endpunkte unterstützen Ethereum-WebSocket-Abonnements (eth_subscribe / eth_unsubscribe) über wss://. Verbinden Sie sich mit demselben Host wie die HTTPS-RPC, mit dem wss:// Schema:
wss://<chain>.<network>.romeprotocol.xyz/Das ist das, was der ethers WebSocketProvider im Hintergrund verwendet, also .on('block') und contract.on(event) sofort funktionieren. viem benötigt eine Einstellung, beschrieben im viem Abschnitt.
Abonnementtypen
newHeads
jeden neuen Block
Block-Ticker, Aktualisieren von Guthaben/Nonces, blockweise Bots, Indexer
logs
übereinstimmenden Ereignissen (nach Adresse / Topics)
Reagieren auf die Ereignisse Ihres Contracts, Relayer/Bridges, Trading-Bots
newPendingTransactions
—
akzeptiert, gibt aber nie etwas aus (Rome hat keinen öffentlichen Mempool)
ethers (v6)
import { ethers } from "ethers";
const provider = new ethers.WebSocketProvider(
"wss://martius.testnet.romeprotocol.xyz/"
);
// newHeads
provider.on("block", (blockNumber) => {
console.log("new block", blockNumber);
});
// logs — auf ein Contract-Ereignis reagieren
const contract = new ethers.Contract(address, abi, provider);
contract.on("Transfer", (from, to, value) => {
console.log("Transfer", from, to, value.toString());
});viem
viem's webSocket Transport registriert ein Abonnement nur, wenn die ID eine Zeichenfolge ist. Rome gibt eine Zahl zurück, also watchBlocks über ein einfaches webSocket erhält der Transport nichts. Übergeben Sie poll: true und viem fragt stattdessen über die Verbindung ab (getestet mit watchBlocks), oder verwenden Sie ethers für Push-Updates.
Rohes JSON-RPC
Die Abonnement-ID ist eine JSON-Zahl, kein Hex-String, und die Benachrichtigungen tragen dieselbe Zahl. ethers handhabt dies für Sie. viem's webSocket Der Transport akzeptiert nur eine String-ID, daher verwirft er die Benachrichtigungen (siehe viem). Wenn Sie einen Roh-Client schreiben, vergleichen Sie IDs als Zahlen und geben Sie die Zahl zurück an eth_unsubscribe.
Für logs, übergeben Sie ein Filterobjekt als zweiten Parameter:
Hinweise
Abonnements senden Updates, sobald neue Blöcke erzeugt werden (die Latenz liegt in der Größenordnung einer Blockzeit).
Behandeln Sie bei langlebigen Verbindungen Wiederverbindungen in Ihrem Client — Standard für jedes WebSocket-RPC.
Zuletzt aktualisiert
War das hilfreich?