13 releases (4 breaking)
0.5.0 | Aug 8, 2020 |
---|---|
0.4.1 | Jul 26, 2020 |
0.3.1 | Jul 26, 2020 |
0.2.3 | Jul 26, 2020 |
0.1.4 | Jul 22, 2020 |
#1555 in Asynchronous
42KB
908 lines
Ws-Gonzale
Ws Gonzale is aimed to be a async ws-server and that's it.
Right now it's just in it's most naive representation and it's not fully compatible yet
I also want to include some good examples of "presence" and shared data.
I didn't want to just copy another framework.
Basic overview of the examples/life-cycle
+--------+ +--------------+ +------+
| Client |<----->| WsConnection |<----| MPMC |<-------<-------.
+--------+ +--------------+ +------+ |
\ |
+--------+ +--------------+ \ +------+ +---+---------------+
| Client |<----->| WsConnection |--*--->----| MPMC |-->->-| Server lifecycle |
+--------+ +--------------+ +------+ +--------+----------+
\ /
+--------+ +-----------+ \ +------+ /
| Client |------>| handshake | '---<-<--| MPMC |<--*
+--------+ |___________| +------+
Checkout the example
If you wanna run a simple WS server
cargo run --example life-cycle
Benchmark
Rust benchmark
cargo run bench
Using artillery
Start the test server first
cargo run --example life-cycle
and then in another window run
artillery run benches/artillery.yml
FAQ
Why not use X library?
This is just to play around with so I can get used to multithreading environments coming from a NodeJS background.
There are a lot of great Rust developers out there; but sometimes a bit less intermediate approach can help teach people some basic concepts.
Where is this project going?
See Issues
Where does the name come from?
Speedy gonzales
WS Protocol
This is the most lazy implementation of the WS protocols. Right now it's just supporting handshakes and sending basic messages. https://tools.ietf.org/html/rfc6455
Can I contribute?
Always
Dependencies
~6–19MB
~218K SLoC