# wslay-sys
Low-level Rust FFI bindings to [**wslay**](https://github.com/tatsuhiro-t/wslay), Tatsuhiro Tsujikawa's WebSocket C library.
The wslay C sources are **vendored** in this crate and compiled at build time with [`cc`](https://crates.io/crates/cc); the bindings are generated with [`bindgen`](https://crates.io/crates/bindgen). No system wslay installation is required.
This crate exposes wslay's event-based API verbatim — it is **`unsafe` FFI only**. For a safe, async wrapper (and a full-duplex WebSocket⇄byte-stream bridge with true sub-frame streaming), see [`h2ts-server`](https://crates.io/crates/h2ts-server).
## Why wslay
wslay's event API, with `wslay_event_config_set_no_buffering`, delivers frame payloads **incrementally** via `on_frame_recv_chunk_callback` — it never buffers a whole frame, no matter how large. It performs no I/O itself (callback-driven), so it drops cleanly into async runtimes.
## Build requirements
- A C compiler (`cc` finds one automatically).
- `libclang` (required by `bindgen`). On macOS it ships with the Command Line Tools; on Debian/Ubuntu install `libclang-dev`.
## License
The bindings in this crate are dual-licensed under [MIT](LICENSE-MIT) or
[Apache-2.0](LICENSE-APACHE), at your option. The vendored wslay C sources are
third-party and remain MIT-only — see [`vendor/COPYING`](vendor/COPYING).
Part of [h2ts](https://github.com/debdattabasu/h2ts).