a7f9258b55 | ||
---|---|---|
.github/workflows | ||
autobahn | ||
examples | ||
tests | ||
websock | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
Readme.md | ||
config.nims | ||
nim.cfg | ||
websock.nimble | ||
websock.svg |
Readme.md
Websocket for Nim
This is an implementation of Websocket protocol for Nim and chronos.
nim-websock
includes 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