WebSocket
WebSocket connections provide real-time data streaming without polling. Use them for block notifications, event logs, and pending transactions.
Connection URL
wss://rpc.swiftnodes.io/ws/{chain}?key={API_KEY}JavaScript Example
import { WebSocketProvider } from "ethers";
const provider = new WebSocketProvider(
"wss://rpc.swiftnodes.io/ws/eth?key=YOUR_KEY"
);
// Subscribe to new blocks
provider.on("block", (blockNumber) => {
console.log("New block:", blockNumber);
});viem WebSocket
import { createPublicClient, webSocket } from "viem";
import { mainnet } from "viem/chains";
const client = createPublicClient({
chain: mainnet,
transport: webSocket("wss://rpc.swiftnodes.io/ws/eth?key=YOUR_KEY"),
});
const unwatch = client.watchBlocks({
onBlock: (block) => console.log("Block:", block.number),
});Subscriptions
Use eth_subscribe for real-time event streaming:
// Subscribe to new block headers
{"jsonrpc":"2.0","method":"eth_subscribe","params":["newHeads"],"id":1}
// Subscribe to logs (e.g. Transfer events)
{"jsonrpc":"2.0","method":"eth_subscribe","params":["logs",{
"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}],"id":2}
// Unsubscribe
{"jsonrpc":"2.0","method":"eth_unsubscribe","params":["0x1234..."],"id":3}Connection Limits
| Plan | Max Connections | Messages/sec |
|---|---|---|
| Free | 2 | 1 |
| Starter | 20 | 25 |
| Growth | 50 | 75 |
| Scale | 100 | 150 |
| Pro | 200 | 250 |
Idle Timeout
Connections are closed after 30 minutes of inactivity. Any message (including a ping) resets the timer. Implement reconnection logic in production applications.
Availability
WebSocket endpoints are available for most EVM chains and some non-EVM chains. Check the Supported Chains page or your dashboard for WS availability per chain.