> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sqd.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# evmRpcLatencyWatcher

> Compare block arrival at Portal vs RPC endpoints

Subscribe to RPC endpoints via WebSocket and measure when blocks arrive at the Portal versus when they appear at the RPC. Use this transformer to monitor relative latency.

```ts theme={"system"}
import { evmPortalSource, evmRpcLatencyWatcher } from "@subsquid/pipes/evm";

const stream = evmPortalSource({
  portal: "https://portal.sqd.dev/datasets/base-mainnet",
  outputs: evmDecoder({ range: { from: 'latest' }, events: {} }),
}).pipe(
  evmRpcLatencyWatcher({
    rpcUrl: ["https://base.drpc.org", "https://base-rpc.publicnode.com"],
  })
);

for await (const { data } of stream) {
  if (!data) continue;
  console.table(data.rpc); // url, receivedAt, portalDelayMs
}
```

**Parameters:**

* `rpcUrl`: Array of RPC WebSocket or HTTP URLs to compare against Portal

**Output:** Each batch includes `rpc` array with `url`, `receivedAt`, and `portalDelayMs` per endpoint.

<Warning>
  Measured values include client-side network latency. Results are end-to-end delays as seen by the client, not pure Portal or RPC processing performance.
</Warning>
