# WebSocketProviderWithRetries

Defined in: [atomiq-chain-evm/src/evm/providers/WebSocketProviderWithRetries.ts:17](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/WebSocketProviderWithRetries.ts#L17)

WebSocket RPC provider with reconnect support and retry logic for transient RPC failures.

## Extends

* [`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md)

## Constructors

### Constructor

```
new WebSocketProviderWithRetries(

   url, 

   network?, 

   options?): WebSocketProviderWithRetries;
```

Defined in: [atomiq-chain-evm/src/evm/providers/WebSocketProviderWithRetries.ts:30](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/WebSocketProviderWithRetries.ts#L30)

Creates a new WebSocket provider which retries RPC calls based on the provided policy.

#### Parameters

| Parameter  | Type                              | Description |
| ---------- | --------------------------------- | ----------- |
| `url`      | `string` \| () => `WebSocketLike` |             |
| `network?` | `Networkish`                      |             |
| `options?` | `any`                             |             |

#### Returns

`WebSocketProviderWithRetries`

#### Overrides

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`constructor`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#constructor)

## Properties

### connectionTimeout

```
connectionTimeout: number = 10;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:25](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L25)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`connectionTimeout`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#connectiontimeout)

***

### connectTimer

```
connectTimer: any;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:29](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L29)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`connectTimer`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#connecttimer)

***

### logger

```
readonly logger: LoggerType;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:34](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L34)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`logger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#logger)

***

### pingInterval

```
pingInterval: any;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:27](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L27)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`pingInterval`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#pinginterval)

***

### pingIntervalSeconds

```
pingIntervalSeconds: number = 30;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:24](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L24)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`pingIntervalSeconds`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#pingintervalseconds)

***

### reconnectSeconds

```
reconnectSeconds: number = 5;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:23](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L23)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`reconnectSeconds`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#reconnectseconds)

***

### reconnectTimer

```
reconnectTimer: any;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:28](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L28)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`reconnectTimer`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#reconnecttimer)

***

### requestTimeoutSeconds

```
requestTimeoutSeconds: number = 10;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:22](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L22)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`requestTimeoutSeconds`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#requesttimeoutseconds)

***

### retryPolicy?

```
readonly optional retryPolicy: object;
```

Defined in: [atomiq-chain-evm/src/evm/providers/WebSocketProviderWithRetries.ts:19](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/WebSocketProviderWithRetries.ts#L19)

#### delay?

```
optional delay: number;
```

#### exponential?

```
optional exponential: boolean;
```

#### maxRetries?

```
optional maxRetries: number;
```

***

### websocket

```
websocket: any = null;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:32](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L32)

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`websocket`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#websocket)

***

### wsCtor()

```
wsCtor: () => WebSocketLike;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:31](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L31)

#### Returns

`WebSocketLike`

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`wsCtor`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#wsctor)

## Methods

### \_connected()

```
_connected(): void;
```

Defined in: [atomiq-chain-evm/src/evm/providers/SocketProvider.ts:299](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/SocketProvider.ts#L299)

#### Returns

`void`

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`_connected`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#_connected)

***

### \_disconnected()

```
_disconnected(): void;
```

Defined in: [atomiq-chain-evm/src/evm/providers/SocketProvider.ts:309](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/SocketProvider.ts#L309)

#### Returns

`void`

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`_disconnected`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#_disconnected)

***

### \_getSubscriber()

```
_getSubscriber(sub): Subscriber;
```

Defined in: [atomiq-chain-evm/src/evm/providers/SocketProvider.ts:235](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/SocketProvider.ts#L235)

#### Parameters

| Parameter | Type           |
| --------- | -------------- |
| `sub`     | `Subscription` |

#### Returns

`Subscriber`

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`_getSubscriber`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#_getsubscriber)

***

### \_processMessage()

```
_processMessage(message): Promise<void>;
```

Defined in: [atomiq-chain-evm/src/evm/providers/SocketProvider.ts:324](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/SocketProvider.ts#L324)

Sub-classes **must** call this with messages received over their transport to be processed and dispatched.

#### Parameters

| Parameter | Type     |
| --------- | -------- |
| `message` | `string` |

#### Returns

`Promise`<`void`>

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`_processMessage`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#_processmessage)

***

### \_register()

```
_register(filterId, subscriber): void;
```

Defined in: [atomiq-chain-evm/src/evm/providers/SocketProvider.ts:259](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/SocketProvider.ts#L259)

Register a new subscriber. This is used internalled by Subscribers and generally is unecessary unless extending capabilities.

#### Parameters

| Parameter    | Type                 |
| ------------ | -------------------- |
| `filterId`   | `string` \| `number` |
| `subscriber` | `SocketSubscriber`   |

#### Returns

`void`

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`_register`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#_register)

***

### \_send()

```
_send(payload): Promise<any[]>;
```

Defined in: [atomiq-chain-evm/src/evm/providers/SocketProvider.ts:270](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/SocketProvider.ts#L270)

#### Parameters

| Parameter | Type  |
| --------- | ----- |
| `payload` | `any` |

#### Returns

`Promise`<`any`\[]>

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`_send`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#_send)

***

### \_write()

```
_write(message): Promise<void>;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:107](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L107)

Sub-classes **must** override this to send %%message%% over their transport.

#### Parameters

| Parameter | Type     |
| --------- | -------- |
| `message` | `string` |

#### Returns

`Promise`<`void`>

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`_write`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#_write)

***

### destroy()

```
destroy(): Promise<void>;
```

Defined in: [atomiq-chain-evm/src/evm/providers/ReconnectingWebSocketProvider.ts:112](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/ReconnectingWebSocketProvider.ts#L112)

#### Returns

`Promise`<`void`>

#### Inherited from

[`ReconnectingWebSocketProvider`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md).[`destroy`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/ReconnectingWebSocketProvider.md#destroy)

***

### send()

```
send(method, params): Promise<any>;
```

Defined in: [atomiq-chain-evm/src/evm/providers/WebSocketProviderWithRetries.ts:37](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/providers/WebSocketProviderWithRetries.ts#L37)

#### Parameters

| Parameter | Type                                  |
| --------- | ------------------------------------- |
| `method`  | `string`                              |
| `params`  | `any`\[] \| `Record`<`string`, `any`> |

#### Returns

`Promise`<`any`>
