npm package: @soundworks/plugin-mixing
Description: [![npm version](https://badge.fury.io/js/@soundworks%2Fplugin-checkin.svg)](https://badge.fury.io/js/@soundworks%2Fplugin-checkin)
Author: Benjamin Matuszewski
Latest version: 5.0.0

# soundworks | plugin checkin

[![npm version](https://badge.fury.io/js/@soundworks%2Fplugin-checkin.svg)](https://badge.fury.io/js/@soundworks%2Fplugin-checkin)

[`soundworks`](https://soundworks.dev) plugin to assign a unique index to the clients among the available ones.

When a client disconnects, it's index is recycled into the pool of available indexes and can be re-assigned to a newly connected client. The number of available indexes can be limited and can also be associated to additional data.

## Table of Contents

<!-- toc -->

- [Installation](#installation)
- [Usage](#usage)
- [API](#api)
- [ClientPluginCheckin](#clientplugincheckin)
- [ServerPluginCheckin](#serverplugincheckin)
- [Credits](#credits)
- [License](#license)

<!-- tocstop -->

## Installation

```sh
npm install @soundworks/plugin-checkin --save
```

## Usage

### Server

```js
import { Server } from '@soundworks/core/server.js';
import ServerPluginCheckin from '@soundworks/plugin-checkin/server.js';

const server = new Server();
server.pluginManager.register('checkin', ServerPluginCheckin);
```

### Client

```js
import { Client } from '@soundworks/core/client.js';
import ClientPluginCheckin from '@soundworks/plugin-checkin/client.js';

const client = new Client();
client.pluginManager.register('checkin', ClientPluginCheckin);

await client.start();

const checkin = await client.pluginManager.get('checkin');
const index = checkin.getIndex();
```

## API

<!-- api -->
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

### Table of Contents

*   [ClientPluginCheckin][1]
    *   [getIndex][2]
    *   [getData][3]
*   [ServerPluginCheckin][4]
    *   [Examples][5]

## ClientPluginCheckin

**Extends ClientPlugin**

Client-side representation of the check-in plugin.

The constructor should never be called manually. The plugin will be
automatically instantiated when registered in the `pluginManager`.

### getIndex

Return the unique index given to the client

Returns **[number][6]**&#x20;

### getData

Return the associated data given to the client (if any)

Returns **any**&#x20;

## ServerPluginCheckin

**Extends ServerPlugin**

Server-side representation of the check-in plugin.

The constructor should never be called manually. The plugin will be
automatically instantiated when registered in the `pluginManager`.

Available options:

*   `capacity` {number} \[Infinity] - Number of available indexes
*   `data` {array} - optional data associated to a given index.

### Examples

```javascript
import ServerPluginCheckin from '@soundworks/plugin-checkin/server.js';

server.pluginManager.register('checkin', ServerPluginCheckin, {
  capacity: 3,
  data: [{ color: 'green' }, { color: 'yellow' }, { color: 'pink' }],
});
```

[1]: #clientplugincheckin

[2]: #getindex

[3]: #getdata

[4]: #serverplugincheckin

[5]: #examples

[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number

<!-- apistop -->

## Credits

[https://soundworks.dev/credits.html](https://soundworks.dev/credits.html)

## License

[BSD-3-Clause](./LICENSE)