# LiveKit

The [LiveKit](https://livekit.io/) transport is the most versatile and efficient of the supported transports, and also the easiest to implement. Clients should use it when they receive an appropriate connection string from their realm's [Archipelago](https://github.com/decentraland/docs/blob/main/contributor/archipelago/README.md) service, or if it's indiciated as a fixed transport.

{% hint style="info" %}
You can see the LiveKit transport in action and play with its features using the open-source [Comms Station](https://decentraland.github.io/comms-station/).
{% endhint %}

Unlike the custom [websocket](https://github.com/decentraland/docs/blob/main/contributor/transport-types/websocket/README.md) transport, it uses a third-party (open source) library, which greatly simplifies the development process by abstracting all transport-level logic and serialization.

LiveKit transport URIs begin with the `livekit:` prefix, followed by the `wss://` server URL. They also include a pre-authorized `access_token`, generated by [Archipelago](https://github.com/decentraland/docs/blob/main/contributor/archipelago/README.md) when the client authenticates.

```
livekit:wss://comms.example.com?access_token=eyJhbGciOiJI...
```

### Connecting and Authenticating

The LiveKit client library neatly encapsulates all the connection and authentication logic.

There is no additional authentication step when using the LiveKit transport. The `access_token` provided by Archipelago is already verified and authorized.

### Exchanging Messages

Clients relying on the LiveKit library can easily broadcast, send direct messages and publish live media feeds.

Payloads are plain comms [`Packets`](https://github.com/decentraland/docs/blob/main/contributor/messages/README.md) without any additional wrapping.
