56 lines
1.1 KiB
Markdown
56 lines
1.1 KiB
Markdown
# cws
|
|
|
|
A minimal HTTP web server written in C.
|
|
|
|
> **Note**: This is a personal project; it is not intended to be a production-ready tool, nor will it ever be. Use it at your own risk.
|
|
|
|
## Requirements
|
|
|
|
- [libcyaml](https://github.com/tlsa/libcyaml)
|
|
- myclib (on my profile)
|
|
- [doxygen](https://www.doxygen.nl/) (optional, for documentation only - requires `dot`)
|
|
|
|
## Build
|
|
|
|
```bash
|
|
meson setup build
|
|
meson compile -C build
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. Copy `config.yaml` and `www/` directory to your working directory
|
|
2. Run `./build/cws`
|
|
3. Open `http://localhost:3030` in your browser
|
|
|
|
## Documentation
|
|
|
|
```bash
|
|
git submodule update --init
|
|
doxygen
|
|
```
|
|
|
|
Then open `docs/html/index.html`.
|
|
|
|
## Roadmap
|
|
|
|
- [ ] Virtual hosts support
|
|
- [ ] Minimal templating engine
|
|
- [ ] IPv6 compatibility
|
|
|
|
## Performance
|
|
|
|
Tested with [goku](https://github.com/jcaromiq/goku) (`-c 400 -d 30`):
|
|
|
|
```bash
|
|
Concurrency level 400
|
|
Time taken 31 seconds
|
|
Total requests 365363
|
|
Mean request time 22.665250723253322 ms
|
|
Max request time 2067 ms
|
|
Min request time 0 ms
|
|
95'th percentile: 20 ms
|
|
99.9'th percentile: 1078 ms
|
|
200 OK 365363
|
|
```
|