mirror of
https://github.com/status-im/nim-websock
synced 2026-01-02 12:04:51 +00:00
No description
* modernise imports * introduce `raises` for most `async` functions * remove lots of spurious memory allocations and zeroing * check decompression max size before allocating memory (!) * simplify error handling when reading frames * avoid blocking connection for too long just to send errors * don't swallow original error when trying to send error to client * need more mem for deflate * fail autobahn job on autobahn failures * deprecate handshakeTimeout |
||
|---|---|---|
| .github/workflows | ||
| autobahn | ||
| examples | ||
| scripts | ||
| tests | ||
| websock | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| config.nims | ||
| nim.cfg | ||
| Readme.md | ||
| websock.nimble | ||
| websock.svg | ||
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