mirror of
https://github.com/status-im/nim-websock.git
synced 2025-01-10 01:25:40 +00:00
andri lim
90c664545d
implement UTF8 handling (#35)
* implement UTF8 handling or to be precisely, we add UTF8 validator which main duty is to detect malformed UTF8 sequence using a fast DFA UTF8 decoder. also enable autobahn UTF8 category tests, much more green :) fixes #13 * fixes case 7.5.1 Send a close frame with invalid UTF8 payload * add tests for validateUTF8 - tests for validateUTF8 in raw mode - tests for validateUTF8 in websocket client/server
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
Description
Languages
Nim
100%