3e1599d790
* moving files around * wip * wip * move tls example into server example * add tls functionality * rename * rename * fix tests * move extension related files to own folder * use trace instead of debug * export extensions * rework partial frame handling and closing * rework status codes as distincts * logging * re-enable extensions processing for frames * enable all test for non-tls server * remove tlsserver * remove offset to mask - don't think we need it * pass sessions extensions when calling send/recv * adding encode/decode extensions flow test * move server/client setup to helpers * proper frame order execution on decode * fix tls tests |
||
---|---|---|
.github/workflows | ||
autobahn | ||
examples | ||
tests | ||
ws | ||
.editorconfig | ||
.gitignore | ||
Readme.md | ||
ws.nimble |
Readme.md
Websocket for Nim
We're working towards an implementation of the Websocket protocol for Nim. This is very much a work in progress, and not yet in a usable state.
See what is available and what is missing in Autobahn summary report
Building and testing
Install dependencies:
nimble install -d
Starting HTTP server:
nim c -r test/server.nim
Testing Server Response:
curl --location --request GET 'http://localhost:8888'
Testing Websocket Handshake:
curl --include \
--no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host: example.com:80" \
--header "Origin: http://example.com:80" \
--header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
--header "Sec-WebSocket-Version: 13" \
http://localhost:8888/ws
Roadmap
- Framing
- Text Messages
- Binary Messages
- Pings/Pongs
- Reserved Bits
- Opcodes
- Non-control Opcodes
- Control Opcodes
- Fragmentation
- UTF-8 Handling
- Close Handling
- Basic close behavior
- Close frame structure
- Payload length
- Valid close codes
- Invalid close codes
- Integrate Autobahn Test suite. (In progress)
- WebSocket Compression
- WebSocket Extensions
- Performance