d60df8176d
previously we are using bash to run parallel autobahn test. now we leverage CI jobs to run parallel tests. with the inclusion of compression extension, the autobahn test suite took significant time to pass. move it to manually triggered CI as it cannot make the main CI to fail anyway. we only run basic autobahn tests in regular CI. |
||
---|---|---|
.github/workflows | ||
autobahn | ||
examples | ||
tests | ||
websock | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
Readme.md | ||
websock.nimble | ||
websock.svg |
Readme.md
Websocket for Nim
This is an implementation of Websocket protocol for Nim. nim-websock have both client and server in regular ws and wss(secure) mode.
It also pass all autobahn tests Autobahn summary report.
Building and testing
Install dependencies:
nimble install -d
Starting HTTP server:
nim c -r examples/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.
- WebSocket Compression
- WebSocket Extensions
- Performance