# Bevy websocket adapter
> Simple adapter to receive WebSocket messages in your [bevy](https://bevyengine.org/) games as native Rust types.
:construction: | This is a work in progress, many major features are not implemented
:---: | :---
It uses `tokio` as the async backend and `tungstenite` for websocket protocol implementation.
You can check the [`examples`](./examples) directory for more details on the usage of this crate.
### Table of content
- [Bevy websocket adapter](#bevy-websocket-adapter)
- [Table of content](#table-of-content)
- [Message format](#message-format)
- [Roadmap](#roadmap)
#### Message format
All websocket messages must be JSON object in this format:
```json
{
"t": "MyMessageType",
"d": "..."
}
```
:warning: | The `t` field MUST be unique across all your messages types, one value of `t` will always map to the same native rust type.
:---: | :---
The contents of `d` can be any valid JSON value. Your native rust type must be able to serialize/deserialize the contents of `d` using the `serde_json` crate.
#### Roadmap
- [x] Receive message from clients
- [x] Deserialize messages to native Rust types
- [x] Connect / Disconnect EventReader
- [x] Send messages to clients
- [x] Broadcast message
- [ ] Client
- [ ] Raw message EventReader in Bevy
- [ ] Unmatched messages EventReader