[**Red5 Pro WebRTC SDK v15.6.1**](../README.md)

***

[Red5 Pro WebRTC SDK](../globals.md) / MessageChannel

# Class: MessageChannel

MessageChannel is a subclass of WHIPClient that provides a data channel for sending and receiving messages only.
_There is no underlying media streaming logic in this client._

This ingest-based client is useful for sending and receiving messages to and from the server over a designated data channel.

## Extends

- [`WHIPClient`](WHIPClient.md)

## Constructors

### Constructor

> **new MessageChannel**(`url`, `additionalOptions?`): `MessageChannel`

#### Parameters

##### url

`string` \| `undefined`

##### additionalOptions?

[`RTCWhipPublisherConfigType`](../type-aliases/RTCWhipPublisherConfigType.md)

#### Returns

`MessageChannel`

#### Overrides

[`WHIPClient`](WHIPClient.md).[`constructor`](WHIPClient.md#constructor)

## Accessors

### options

#### Get Signature

> **get** **options**(): [`RTCWhipPublisherConfigType`](../type-aliases/RTCWhipPublisherConfigType.md) \| `undefined`

Get the options for the WHIPClient.

##### Returns

[`RTCWhipPublisherConfigType`](../type-aliases/RTCWhipPublisherConfigType.md) \| `undefined`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`options`](WHIPClient.md#options)

## Methods

### callServer()

> **callServer**(`methodName`, `args`): `Promise`\<`any`\>

Call a method on the server.

#### Parameters

##### methodName

`string`

The name of the method to call.

##### args

`any`

The arguments to call the method with.

#### Returns

`Promise`\<`any`\>

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`callServer`](WHIPClient.md#callserver)

***

### close()

> **close**(): `Promise`\<`void`\>

Close the MessageChannel.

#### Returns

`Promise`\<`void`\>

***

### emit()

> **emit**(`type`, `data`): `void`

Emit an event on the WHIPClient.

#### Parameters

##### type

`string`

The type of event to emit.

##### data

`any`

The data to emit.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`emit`](WHIPClient.md#emit)

***

### getDataChannel()

> **getDataChannel**(): `RTCDataChannel` \| `undefined`

Get the DataChannel for the WHIPClient.

#### Returns

`RTCDataChannel` \| `undefined`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`getDataChannel`](WHIPClient.md#getdatachannel)

***

### getMediaStream()

> **getMediaStream**(): `MediaStream` \| `undefined`

Get the MediaStream generated for the WHIPClient.

#### Returns

`MediaStream` \| `undefined`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`getMediaStream`](WHIPClient.md#getmediastream)

***

### getMessageTransport()

> **getMessageTransport**(): `MessageTransport` \| `undefined`

Get the MessageTransport for the WHIPClient.

#### Returns

`MessageTransport` \| `undefined`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`getMessageTransport`](WHIPClient.md#getmessagetransport)

***

### getOptions()

> **getOptions**(): [`RTCWhipPublisherConfigType`](../type-aliases/RTCWhipPublisherConfigType.md) \| `undefined`

Get the options for the WHIPClient.

#### Returns

[`RTCWhipPublisherConfigType`](../type-aliases/RTCWhipPublisherConfigType.md) \| `undefined`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`getOptions`](WHIPClient.md#getoptions)

***

### getPeerConnection()

> **getPeerConnection**(): `RTCPeerConnection` \| `undefined`

Get the PeerConnection for the WHIPClient.

#### Returns

`RTCPeerConnection` \| `undefined`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`getPeerConnection`](WHIPClient.md#getpeerconnection)

***

### getPubNubClient()

> **getPubNubClient**(): [`PubNubClient`](PubNubClient.md) \| `undefined`

Get the PubNub client for the WHIPClient.

#### Returns

[`PubNubClient`](PubNubClient.md) \| `undefined`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`getPubNubClient`](WHIPClient.md#getpubnubclient)

***

### getType()

> **getType**(): `string`

Get the type of the MessageChannel.

#### Returns

`string`

#### Overrides

[`WHIPClient`](WHIPClient.md).[`getType`](WHIPClient.md#gettype)

***

### init()

> **init**(`options`): `Promise`\<`MessageChannel`\>

Initialize the MessageChannel.

#### Parameters

##### options

[`RTCWhipPublisherConfigType`](../type-aliases/RTCWhipPublisherConfigType.md)

The options to initialize the MessageChannel with. See [RTCWhipPublisherConfigType](../type-aliases/RTCWhipPublisherConfigType.md) for more details.

#### Returns

`Promise`\<`MessageChannel`\>

#### Overrides

[`WHIPClient`](WHIPClient.md).[`init`](WHIPClient.md#init)

***

### initWithStream()

> **initWithStream**(`options`, `stream`): `Promise`\<`MessageChannel`\>

Initialize the WHIPClient with a MediaStream. Doing so will skip the SDK attempting to generate a MediaStream through browser-based media APIs.

#### Parameters

##### options

[`RTCWhipPublisherConfigType`](../type-aliases/RTCWhipPublisherConfigType.md)

The options to use for initialization.

##### stream

`MediaStream`

The stream to use for initialization.

#### Returns

`Promise`\<`MessageChannel`\>

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`initWithStream`](WHIPClient.md#initwithstream)

***

### monitorStats()

> **monitorStats**(`stats?`): [`WHIPClient`](WHIPClient.md)

Monitor the statistics of the MediaStream being published to the server over the underlying RTCPeerConnection..

#### Parameters

##### stats?

[`StatsConfig`](../type-aliases/StatsConfig.md)

The statistics configuration.

#### Returns

[`WHIPClient`](WHIPClient.md)

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`monitorStats`](WHIPClient.md#monitorstats)

***

### muteAudio()

> **muteAudio**(): `void`

Mute the audio being published to the server.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`muteAudio`](WHIPClient.md#muteaudio)

***

### muteVideo()

> **muteVideo**(): `void`

Mute the video being published to the server.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`muteVideo`](WHIPClient.md#mutevideo)

***

### off()

> **off**(`type`, `fn`): `void`

Remove an event listener from the WHIPClient.

#### Parameters

##### type

`string`

The type of event to remove the listener from.

##### fn

(`event`) => `void`

The function to remove the listener from.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`off`](WHIPClient.md#off)

***

### on()

> **on**(`type`, `fn`): `void`

Add an event listener to the WHIPClient.

#### Parameters

##### type

`string`

The type of event to listen for.

##### fn

(`event`) => `void`

The function to call when the event is triggered.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`on`](WHIPClient.md#on)

***

### open()

> **open**(`inactivePingIntervalMS?`): `Promise`\<`MessageChannel`\>

Open the MessageChannel.

#### Parameters

##### inactivePingIntervalMS?

`number` = `10000`

The interval in milliseconds to send an inactive ping.

#### Returns

`Promise`\<`MessageChannel`\>

***

### publish()

> **publish**(): `Promise`\<`MessageChannel`\>

Publish the MediaStream to the server.

#### Returns

`Promise`\<`MessageChannel`\>

#### Overrides

[`WHIPClient`](WHIPClient.md).[`publish`](WHIPClient.md#publish)

***

### send()

> **send**(`methodName`, `data`): `Promise`\<`boolean` \| `undefined`\>

Send a JSON message to the server over the data channel.
 - Overrides the send method in the WHIPClient class to properly wrap the data in a message object with methodName.

#### Parameters

##### methodName

`string`

The name of the method to send.

##### data

`any`

The data to send.

#### Returns

`Promise`\<`boolean` \| `undefined`\>

#### Overrides

[`WHIPClient`](WHIPClient.md).[`send`](WHIPClient.md#send)

***

### sendData()

> **sendData**(`data`): `Promise`\<`boolean`\>

Send data to the server over the data channel.

#### Parameters

##### data

`any`

The data to send. Can be of any type, such as an arraybuffer.

#### Returns

`Promise`\<`boolean`\>

***

### sendLog()

> **sendLog**(`level`, `message`): `void`

Send a log message to the server.

#### Parameters

##### level

`string`

The level of the log message.

##### message

`any`

The message to send.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`sendLog`](WHIPClient.md#sendlog)

***

### sendMessage()

> **sendMessage**(`message`): `Promise`\<`boolean`\>

Send a message to the server over the data channel. This will attempt to wrap and send the message as a JSON payload.

#### Parameters

##### message

`any`

The message to send.

#### Returns

`Promise`\<`boolean`\>

#### See

[sendData](#senddata) for sending raw data to the server over the data channel.

***

### sendPubNub()

> **sendPubNub**(`channel`, `message`): `Promise`\<`boolean`\>

Send a message to the PubNub channel.

#### Parameters

##### channel

`string`

The channel to send the message to.

##### message

`any`

The message to send.

#### Returns

`Promise`\<`boolean`\>

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`sendPubNub`](WHIPClient.md#sendpubnub)

***

### subscribePubNub()

> **subscribePubNub**(`channel`, `options`): `Promise`\<`boolean`\>

Subscribe to a PubNub channel.

#### Parameters

##### channel

`string`

The channel to subscribe to.

##### options

`any`

The options to use for subscription.

#### Returns

`Promise`\<`boolean`\>

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`subscribePubNub`](WHIPClient.md#subscribepubnub)

***

### trigger()

> **trigger**(`event`): `void`

Trigger an event on the MessageChannel.

#### Parameters

##### event

[`Event`](Event.md)

The event to trigger.
 - Overrides the trigger method in the WHIPClient class to properly trigger the event on the MessageChannel.

#### Returns

`void`

#### Overrides

[`WHIPClient`](WHIPClient.md).[`trigger`](WHIPClient.md#trigger)

***

### unmonitorStats()

> **unmonitorStats**(): [`WHIPClient`](WHIPClient.md)

Unmonitor the statistics of the MediaStream being published to the server over the underlying RTCPeerConnection.

#### Returns

[`WHIPClient`](WHIPClient.md)

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`unmonitorStats`](WHIPClient.md#unmonitorstats)

***

### unmuteAudio()

> **unmuteAudio**(): `void`

Unmute the audio being published to the server.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`unmuteAudio`](WHIPClient.md#unmuteaudio)

***

### unmuteVideo()

> **unmuteVideo**(): `void`

Unmute the video being published to the server.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`unmuteVideo`](WHIPClient.md#unmutevideo)

***

### unpublish()

> **unpublish**(): `Promise`\<`void`\>

Unpublish the MediaStream from the server.

#### Returns

`Promise`\<`void`\>

#### Overrides

[`WHIPClient`](WHIPClient.md).[`unpublish`](WHIPClient.md#unpublish)

***

### unsubscribePubNub()

> **unsubscribePubNub**(`channel`): `Promise`\<`boolean`\>

Unsubscribe from a PubNub channel.

#### Parameters

##### channel

`string`

The channel to unsubscribe from.

#### Returns

`Promise`\<`boolean`\>

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`unsubscribePubNub`](WHIPClient.md#unsubscribepubnub)

***

### updateOptimizationParams()

> **updateOptimizationParams**(`optimizationParams`): `void`

Update the optimization parameters for the published stream.

#### Parameters

##### optimizationParams

`OptimizationParams`

The optimization parameters to update.

#### Returns

`void`

#### Inherited from

[`WHIPClient`](WHIPClient.md).[`updateOptimizationParams`](WHIPClient.md#updateoptimizationparams)
