Events and WebSockets
CometBFT exposes a WebSocket at /websocket on the RPC host.
- Web / Node
- React Native
- Flutter (CosmJS)
npm i -g wscat
wscat -c wss://rpc.testnet.safrochain.com/websocket
Subscribe to new blocks:
{
"jsonrpc": "2.0",
"method": "subscribe",
"id": 1,
"params": { "query": "tm.event='NewBlock'" }
}
Subscribe to transactions:
{
"jsonrpc": "2.0",
"method": "subscribe",
"id": 2,
"params": { "query": "tm.event='Tx'" }
}
Filter wasm events:
tm.event='Tx' AND wasm._contract_address='addr_safro1...'
WebSocket drains battery on mobile. Prefer:
- Poll
GET /cosmos/tx/v1beta1/txs?events=...after broadcast - Short-lived WS only on active "waiting for confirmation" screens
// Prefer polling after broadcast (battery-friendly)
const txRes = await fetch(
`https://rest.testnet.safrochain.com/cosmos/tx/v1beta1/txs/${txHash}`,
);
const tx = await txRes.json();
Optional: short-lived WebSocket only on a "waiting for confirmation" screen.