# FallbackTransport

URL: https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/interfaces/fallbacktransport/

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:72](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L72)

A transport that dials WebTransport and, unless that is ready within the WebSocket delay, QMux over WebSocket
alongside it: the first ready carries the session and the other is closed. Before `ready` it stands in for the dials
in progress; after, it is the winner's.

## Implements

- [`MoqtTransport`](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/moqttransport/)

## Properties

### closed

```ts
readonly closed: Promise<CloseInfo>;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:76](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L76)

The winner's `closed`; rejects with the dial's failure when neither dial came up (TA-9).

#### Implementation of

`MoqtTransport.closed`

***

### incomingBidirectionalStreams

```ts
readonly incomingBidirectionalStreams: ReadableStream<BidirectionalStreamLike>;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:80](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L80)

The winner's incoming bidirectional streams.

#### Implementation of

`MoqtTransport.incomingBidirectionalStreams`

***

### incomingUnidirectionalStreams

```ts
readonly incomingUnidirectionalStreams: ReadableStream<ReadableStream<Uint8Array<ArrayBufferLike>>>;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:78](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L78)

The winner's incoming unidirectional streams.

#### Implementation of

`MoqtTransport.incomingUnidirectionalStreams`

***

### ready

```ts
readonly ready: Promise<void>;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:74](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L74)

Resolves once one of the dials is ready; rejects with the WebSocket dial's failure, or when closed first.

## Accessors

### carrier

#### Get Signature

```ts
get carrier(): 
  | FallbackCarrier
  | undefined;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:103](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L103)

The transport the session runs on; undefined until `ready`.

##### Returns

  \| [`FallbackCarrier`](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/type-aliases/fallbackcarrier/)
  \| `undefined`

***

### protocol

#### Get Signature

```ts
get protocol(): string;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:108](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L108)

The protocol the winner's peer selected (TA-8); empty until `ready` resolves.

##### Returns

`string`

#### Implementation of

`MoqtTransport.protocol`

## Methods

### close()

```ts
close(info?): void;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:121](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L121)

Close the winner (TA-10); before `ready`, cancel every dial in progress (TA-11).

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `info?` | \{ `closeCode?`: `number`; `reason?`: `string`; \} |
| `info.closeCode?` | `number` |
| `info.reason?` | `string` |

#### Returns

`void`

#### Implementation of

`MoqtTransport.close`

***

### createBidirectionalStream()

```ts
createBidirectionalStream(): Promise<BidirectionalStreamLike>;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:116](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L116)

Open a bidirectional stream to the peer.

#### Returns

`Promise`\<[`BidirectionalStreamLike`](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/bidirectionalstreamlike/)\>

#### Implementation of

`MoqtTransport.createBidirectionalStream`

***

### createUnidirectionalStream()

```ts
createUnidirectionalStream(options?): Promise<WritableStream<Uint8Array<ArrayBufferLike>>>;
```

Defined in: [relay-sdks/ts/packages/relay-websocket/src/fallback.ts:112](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-websocket/src/fallback.ts#L112)

Open a unidirectional stream to the peer, scheduled by `options.sendOrder` where the transport supports it.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `options?` | [`MoqtSendStreamOptions`](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtsendstreamoptions/) |

#### Returns

`Promise`\<`WritableStream`\<`Uint8Array`\<`ArrayBufferLike`\>\>\>

#### Implementation of

`MoqtTransport.createUnidirectionalStream`
