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

PlanMax ConnectionsMessages/sec
Free21
Starter2025
Growth5075
Scale100150
Pro200250

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.