# Messenger

Defined in: [atomiq-base/src/messaging/Messenger.ts:9](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/messaging/Messenger.ts#L9)

An interface of a messenger, this is a generic data propagation layer, where parties can broadcast messages and others can listen to these broadcasted messages

## Methods

### broadcast()

```
broadcast(msg): Promise<void>;
```

Defined in: [atomiq-base/src/messaging/Messenger.ts:28](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/messaging/Messenger.ts#L28)

Broadcast a message to the data propagation layer

#### Parameters

| Parameter | Type      | Description |
| --------- | --------- | ----------- |
| `msg`     | `Message` |             |

#### Returns

`Promise`<`void`>

***

### init()

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

Defined in: [atomiq-base/src/messaging/Messenger.ts:14](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/messaging/Messenger.ts#L14)

Initializes the messenger instance

#### Returns

`Promise`<`void`>

***

### stop()

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

Defined in: [atomiq-base/src/messaging/Messenger.ts:47](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/messaging/Messenger.ts#L47)

Stops the instance, releasing any resources used by it

#### Returns

`Promise`<`void`>

***

### subscribe()

```
subscribe(callback): Promise<void>;
```

Defined in: [atomiq-base/src/messaging/Messenger.ts:35](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/messaging/Messenger.ts#L35)

Adds a listener to listen to broadcasted messages

#### Parameters

| Parameter  | Type              | Description |
| ---------- | ----------------- | ----------- |
| `callback` | (`msg`) => `void` |             |

#### Returns

`Promise`<`void`>

***

### unsubscribe()

```
unsubscribe(callback): Promise<boolean>;
```

Defined in: [atomiq-base/src/messaging/Messenger.ts:42](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/messaging/Messenger.ts#L42)

Removes a listener

#### Parameters

| Parameter  | Type              | Description |
| ---------- | ----------------- | ----------- |
| `callback` | (`msg`) => `void` |             |

#### Returns

`Promise`<`boolean`>

***

### warmup()?

```
optional warmup(): Promise<void>;
```

Defined in: [atomiq-base/src/messaging/Messenger.ts:21](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/messaging/Messenger.ts#L21)

The messenger implementation can expose a warmup function that warms up the connection before an actual broadcast takes place (this is useful for browsers environments where you might want to warmup the connection before the tab is backgrounded)

#### Returns

`Promise`<`void`>
