# `ZenWebsocket.Examples.PlatformAdapterTemplate`
[🔗](https://github.com/ZenHive/zen_websocket/blob/v0.8.0/lib/zen_websocket/examples/platform_adapter_template.ex#L1)

Minimal template for creating platform-specific WebSocket adapters.

## Extension Points
- `handle_message/2` - Process platform-specific messages
- `format_subscription/1` - Convert channels to platform format
- `authenticate/2` - Implement platform authentication

# `authenticate`

```elixir
@spec authenticate(ZenWebsocket.Client.t(), map()) ::
  :ok | {:ok, map()} | {:error, term()}
```

Authenticate with platform credentials

# `connect`

```elixir
@spec connect(
  String.t(),
  keyword()
) :: {:ok, ZenWebsocket.Client.t()} | {:error, term()}
```

Connect to platform WebSocket endpoint

# `handle_message`

```elixir
@spec handle_message(map(), term()) ::
  {:ok, term(), term()} | {:error, term(), term()}
```

Handle incoming platform messages

# `request`

```elixir
@spec request(ZenWebsocket.Client.t(), String.t(), map()) ::
  :ok | {:ok, map()} | {:error, term()}
```

Send platform request

# `subscribe`

```elixir
@spec subscribe(ZenWebsocket.Client.t(), [String.t()]) ::
  :ok | {:ok, map()} | {:error, term()}
```

Subscribe to platform channels

---

*Consult [api-reference.md](api-reference.md) for complete listing*
