#tokio #websocket #server

app twists

Example WebSocket Echo Server implemented with twist

14 releases

Uses old Rust 2015

0.2.1 Mar 21, 2017
0.2.0 Mar 19, 2017
0.1.12 Mar 6, 2017
0.1.6 Feb 25, 2017

#63 in WebSocket

Download history 28/week @ 2022-03-12 56/week @ 2022-03-19 1/week @ 2022-03-26 29/week @ 2022-04-23 98/week @ 2022-04-30 84/week @ 2022-05-07 239/week @ 2022-05-14 44/week @ 2022-05-21 98/week @ 2022-05-28 99/week @ 2022-06-04 1/week @ 2022-06-11 2/week @ 2022-06-18 15/week @ 2022-06-25

131 downloads per month

MIT/Apache

26KB
562 lines

twists

Example WebSocket echo server implemented with twist based on tokio

TODO

The base library twist does not yet implement all of RFC 6455. For example, protocols and exntension passed in the client header are ignored. This will come in time.

Install

Install twists with cargo

cargo install twists

Running

By default twists will listen for incoming connections at 127.0.0.1:11579

twists

You can test with the wscat utility

wscat ws://127.0.0.1:11579 -k 5

The above will send a ping frame every 5 seconds. You should see pongs back. Also text frames will be echoed back.

Help

Command line help

twists --help

Examples

Enable trace output

twist -vvv

Change the unsecure address and port

twist -a 10.0.0.0 -p 12345

TLS Support

twists has support for listen for TLS connections. To enable, you need a valid .pfx file. twists uses native-tls, and native-tls requires a valid pfx file with password. By default, twists will run on port 32276. This can be changed via the tlsport command line argument.

export PFX_PWD='the password for the pfx file'
twists -a 10.x.x.x --with-tls -f path/to/pfx

I use fish shell, so

set -lx PFX_PWD 'the password for the pfx file'
twists -a 10.x.x.x --with-tls -f path/to/pfx

Autobahn Test Suite Results

Results

Notes: The secure results reflect a connection out over the internet and back. This is due to the hostname requirements of TLS and the need for a valid (read: not self-signed) certificate.

Dependencies

~22–29MB
~623K SLoC