subduction_websocket 0.8.0

WebSocket transport layer for the Subduction sync protocol
Documentation
# Subduction WebSocket

> [!WARNING]
> This is an early release preview. It has a very unstable API. No guarantees are given. DO NOT use for production use cases at this time. USE AT YOUR OWN RISK.

WebSocket transport layer for the [Subduction](https://github.com/inkandswitch/subduction) sync protocol. This is the most common transport in practice.

## Architecture

```
┌───────────────────────────────────────────────────────────────┐
│                    WebSocket<T, K>                            │
│                                                               │
│  ┌─────────────┐    outbound_tx    ┌──────────────────────┐   │
│  │ send_bytes()│ ───────────────►  │   [SenderTask]       │   │
│  └─────────────┘                   │  drains to WebSocket │   │
│                                    └──────────────────────┘   │
│                                              │                │
│                                              ▼                │
│                                    ┌──────────────────────┐   │
│                                    │   WebSocketStream    │   │
│                                    │        <T>           │   │
│                                    └──────────────────────┘   │
│                                              │                │
│                                              ▼                │
│  ┌─────────────┐    inbound_reader ┌──────────────────────┐   │
│  │ recv_bytes()│ ◄───────────────  │  [ListenerTask]      │   │
│  └─────────────┘                   │  reads from WebSocket│   │
│                                    └──────────────────────┘   │
└───────────────────────────────────────────────────────────────┘
```

## `no_std` Support

This crate is `no_std` compatible when the `std` feature is disabled. It requires `alloc` for dynamic memory allocation.

## License

See the workspace [`LICENSE`](../LICENSE) file.