> For the complete documentation index, see [llms.txt](https://jmax45.gitbook.io/peerly/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jmax45.gitbook.io/peerly/controller/usage.md).

# Usage

In this example we will send a string and the other peer will return its length.

#### Implementing the Controller

```
import { Controller, Client } from 'peerly';

class StringLen extends Controller {
    constructor(client: Client, payload: any) {
        super(client, 'StringLen', payload);
    }
    res(message: any): Promise<any> {
        return new Promise((resolve, reject) => {
            resolve({ length: message.data.length })
        })
    }
}
```

#### Client 1 (Sending the string)

```
import { Client, utils } from 'peerly'
import StringLen from './StringLen'

(async() => {
    const client = new Client({
        serverList: await utils.getServerList()
    })
    
    client.on('connection', async () => {
        const request = new StringLen(client, { data: 'HELLO WORLD' });
        const response = await request.send();
        
        console.log(response) // -> { length: 11 }
    })
    
    client.connect('UNIQUE-ID');
})()
```

#### Client 2 (Sending the response)

```
import { Client, utils } from 'peerly'
import StringLen from './StringLen'

(async() => {
    const client = new Client({
        serverList: await utils.getServerList()
    })
    client.registerController(new StringLen(client));
    
    client.connect('UNIQUE-ID');
})()
```
