ws-gonzale

Crates.iows-gonzale
lib.rsws-gonzale
version0.5.0
sourcesrc
created_at2020-07-22 21:57:06.734742
updated_at2020-08-08 22:03:52.11559
descriptionNaive websocket server implemented using async / await
homepage
repositoryhttps://github.com/Muqito/ws-gonzale
max_upload_size
id268330
size482,959
Christoffer Lantz (Muqito)

documentation

README

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

Commit count: 57

cargo fmt